Matlab 简单程序问题
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/17 07:04:51
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的操作都是以0.1进行加减的啊。初始值也是以0.1为间隔的0到1的数值。
再答: 我说的是你的判断条件啊,比如0.4-0.5 0.6-0.7的这些数值你算做什么了??
再问: 按照我的计算方法,根本不会出现0.42这种精度在小数点后两位的数值出现。。。嗯 不过后来发现C里面出现了上面附图的那种奇怪的值。
再答: 你有木有看我的问题啊。。。这不是你计算的问题,是MATLAB运算精度的问题。在转换为double类型中末尾出现的。。。。这个特别值你不觉得非常接近于零么