为什么我没有得到水平线的斜率= 0?

时间:2014-09-03 16:59:54

标签: matlab

我试图在Matlab中通过" polyfit"来获取我的数据的斜率。命令。

x = 1:38; y = -60*ones(1,38);
p_fit = polyfit(x,y,1);
slope = p_fit(1);

据我所知,由于y具有常数值,我预计斜率为零。但我在10^-16获得了一个价值。所以请帮助我纠正自己。

y的值以dB域为单位。这有什么问题吗?或任何其他原因。

由于

1 个答案:

答案 0 :(得分:3)

MATLAB运行双精度浮点运算,如果你不这样做,10^-16在预期误差范围内相当好。

如果你想了解细节(你真的应该),请看看"What every computer scientist should know about floating point arithmetic"

<强>更新

关于你的评论,你提到的界限比你看到的错误至少大10个数量级,所以只要保持这种方式,你真的不必担心这个小错误。