我写了以下代码。问题是在T
的具体值,
由于没有明显的原因,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
更改为SyntaxError: Failed to execute 'setRequestHeader' … }↵}' is not a valid HTTP header field value.
则会有效。
答案 0 :(得分:2)
答案很简单
>> 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
答案 1 :(得分:1)
您正在使用浮点运算,它具有一定的精度误差。您的矩阵不包含0.288的值。