我编写了以下代码。问题是在CCD_ 1的特定值处,CCD_ 2在没有明显原因的情况下变为零。有什么解释吗?奇怪的是,当我把它改为0.28
时,它工作得很好。
time=(0:0.002:0.560);
time_f=reshape(time,281,1);
time1=0;
time2=0;
for i=1:1
for j=1:281
T=time_f(j,i);
if (i==1) && (T==0.288);
time1=T;
end
end
end
如果您测试代码,您会发现time1
值将为零,如果您将T
更改为0.28
,它将起作用。
答案是简单的
>> time_f(time_f == 0.288)
ans =
Empty matrix: 0-by-1
您的矩阵不包含0.288 值
这是由于浮点精度,因此您的值不是0.288,而是0.287999999。
只需使用roundn
,四舍五入到指定数量的有效数字
>> time_f = roundn(time_f,-3);
>> find(time_f == 0.288)
ans =
145
如果你没有映射工具箱,你可以做
>> time_f = round(time_f * 1000) / 1000
您使用的是浮点运算,它有一定的精度误差。您的矩阵中并不包含精确的值0.288。