由于任何明显的原因,价值不会改变 - Matlab

时间:2015-07-04 14:03:09

标签: matlab

我写了以下代码。问题是在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.则会有效。

2 个答案:

答案 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的值。