我想通過「polyfit」命令在Matlab中獲得我的數據的斜率。爲什麼我沒有獲得水平線的斜率= 0?
x = 1:38; y = -60*ones(1,38);
p_fit = polyfit(x,y,1);
slope = p_fit(1);
按我的知識,因爲y
具有恆定的值,我期待斜率爲零。但我得到的值爲10^-16
。所以請幫助我糾正自己。
y
的值以dB爲單位。這會有什麼問題嗎?或任何其他原因。
感謝
我想通過「polyfit」命令在Matlab中獲得我的數據的斜率。爲什麼我沒有獲得水平線的斜率= 0?
x = 1:38; y = -60*ones(1,38);
p_fit = polyfit(x,y,1);
slope = p_fit(1);
按我的知識,因爲y
具有恆定的值,我期待斜率爲零。但我得到的值爲10^-16
。所以請幫助我糾正自己。
y
的值以dB爲單位。這會有什麼問題嗎?或任何其他原因。
感謝
MATLAB雙精度浮點運算運行,如果你不告訴它不這樣做,並10^-16
是合理地預期的誤差範圍內。
如果你想進入細節(你真的應該),看看"What every computer scientist should know about floating point arithmetic"。
更新:
至於你的評論,你提到的邊界幅度比你看到的錯誤更大的至少10個數量級,所以只要這個保持這樣,你真的需要不擔心小錯誤。
'1e-16'不夠接近零? – aschepler 2014-09-03 17:04:42