作业帮 > 综合 > 作业

Matlab 简单程序问题

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/17 07:04:51
Matlab 简单程序问题

Matlab 具体程序如下.

 

A=1-round(rand(60,1)*5)/10;%%产生60个随机数并且四舍五入到小数点后一位

 B=round(rand(40,1)*4)/10;%%产生40个随机数并且四舍五入到小数点后一位

 C=[A',B'];

 C=C';

 j=0;

 while j<20

D=round(rand(99,100)*10)/10;%%产生一个99*100的矩阵并且四舍五入到小数点后一位

F=mean(D,1);%%求出每一列的平均数

for i=1:100  %%对F内的数值进行判断,通过判断结果确定C内的数值的变化

    if F(1,i)<0.5

        C(i,1)=C(i,1)-0.1;

    else 

        C(i,1)=C(i,1)+0.1;

    end

    if C(i,1)>1

        C(i,1)=1;

    end

    if C(i,1)<0

        C(i,1)=0;

    end

end

j=j+1;

 end

 a=0;

 b=0;

 c=0;

 d=0;

 e=0;

 for i=1:100  %%统计C中的数值的分布的情况

     if C(i,1)>=0&&C(i,1)<=0.1

         a=a+1;

    

     else if C(i,1)>=0.2&&C(i,1)<=0.4

         b=b+1;

    

         else if C(i,1)>=0.5&&C(i,1)<=0.6

         c=c+1;

  

             else if C(i,1)>=0.7&&C(i,1)<=0.9

         d=d+1;

    

                 else if C(i,1)==1

         e=e+1;

                     end

                 end

             end

         end

     end

 end

 P=[a,b,c,d,e]     %%画图

 subplot(1,3,1)

bar(P);

subplot(1,3,2)

explode=(P==max(P));

h=pie(P,explode);

subplot(1,3,3)

x=[1 2 3 4 5]

line(x,P);


出现的问题是最后求得的 a b c d e的数值加起来不等于100.

并且在C的数组里面出现了奇怪的数.


为什么会出现这种情况呢?

PS:if 的判断里面 | 和 || 的用法有什么不一样呢?



C(i,1)>=0&&C(i,1)=0.2&&C(i,1)=0.5&&C(i,1)=0.7&&C(i,1)
再问: 可是我对于C的操作都是以0.1进行加减的啊。初始值也是以0.1为间隔的0到1的数值。
再答: 我说的是你的判断条件啊,比如0.4-0.5 0.6-0.7的这些数值你算做什么了??
再问: 按照我的计算方法,根本不会出现0.42这种精度在小数点后两位的数值出现。。。嗯 不过后来发现C里面出现了上面附图的那种奇怪的值。
再答: 你有木有看我的问题啊。。。这不是你计算的问题,是MATLAB运算精度的问题。在转换为double类型中末尾出现的。。。。这个特别值你不觉得非常接近于零么