参考代码及输出如下:
clc
clear all
close all
A = randi(10, 100, 2); % 生成100×2的矩阵,1~10随机数,均匀分布
B = (sum((A.^2)'))';
Y = zeros(100, 1);
for i=1:length(B)
if(B(i)>=0 && B(i)<=40) % 条件1,这边我随便写的,请自行修改,以下类似
Y(i) = 20; % 表达式1,这边我随便写的,请自行修改,以下类似
else
if(B(i)>40 && B(i)<=80) % 条件2
Y(i) = 60; % 表达式2
else
if(B(i)>80 && B(i)<=120) % 条件3
Y(i) = 100; % 表达式3
else
if(B(i)>120 && B(i)<=160) % 条件4
Y(i) = 140; % 表达式4
else
Y(i) = 180; % 其他
end
end
end
end
end
Sum_Y = sum(Y); % 对Y累加
fprintf('Sum_Y=%d\n', Sum_Y);
%== 效果图:实现数据的分级 ==%
x_stem = 1:length(B);
x_plot = 1:0.1:length(B);
figure
stem(x_stem,B); % 分级前数据,蓝色圈
hold on
stem(x_stem,Y, 'r'); % 分级后数据,红色圈
%== 辅助线 ==%
hold on
plot(x_plot,40, 'k');
hold on
plot(x_plot,80, 'k');
hold on
plot(x_plot,120, 'k');
hold on
plot(x_plot,160, 'k');
%=============%
grid on
输出:
Sum_Y=7880
效果图:
做测试希望所帮助代码% By lyqmath
function main()
clc
m = 8400;
taxes = ComputeTaxes(m)function taxes = ComputeTaxes(m)mm = m - 3500;
if mm <= 0
taxes = 0;
return;
end
if mm <= 1500
taxes = mm*3/100 - 0;
return;
end
if mm <= 4500
taxes = mm*10/100 - 105;
return;
end
if mm <= 9000
taxes = mm*20/100 - 555;
return;
end
if mm <= 35000
taxes = mm*25/100 - 1005;
return;
end
if mm <= 55000
taxes = mm*30/100 - 2755;
return;
end
if mm <= 80000
taxes = mm*35/100 - 5505;
return;
end
if mm > 80000
taxes = mm*45/100 - 13505;
return;
end
结
taxes = 425>>