急matlab编程计算

2025-05-09 13:43:42
推荐回答(2个)
回答1:

参考代码及输出如下:

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


效果图:

回答2:

做测试希望所帮助代码% 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>>