我有一個數據數組,當繪製時,看起來像這樣。MATLAB曲線擬合,指數與線性
我需要使用polyfit
命令來大致確定1.7
和2.3
之間的最佳擬合指數的時間。我還必須比較這個指數擬合到一個簡單的線性擬合。
我給出的等式Temp(t) = Temp0 * exp(-(t-t0)/tau)
,其中t0
是對應於溫度Temp0
時間(I可以選擇在何處開始我的曲線擬合,但是它必須大致1.7和2.3之間被限制的區域)。這是我的嘗試。
% Arbitrarily defined starting point
t0 = 1.71;
%Exponential fit
p = polyfit(time, log(Temp), 1)
tau = -1./p(1)
Temp0 = exp(p(2))
tm = 1.8:0.01:2.3;
Temp_t = Temp0*exp(-(tm)/tau);
plot(time, Temp, tm, Temp_t)
figure(2)
%Linear fit
p2 = polyfit(time, Temp, 1);
Temp_p = p2(1)*tm + p2(2);
plot(time, Temp, tm, Temp_p)
我的指數擬合最終看起來像。我的線性適合看起來像。 (幾乎相同)。我做錯了什麼?如果兩者適合如此相似?我聽說circshift
可能會有所幫助,但在閱讀幫助文件後,我無法掌握該命令的適用性。
來自@Amro的鏈接似乎已被The MathWorks打破。更新版本是[here](http://www.mathworks.com/help/stats/examples/curve-fitting-and-distribution-fitting.html)。 – horchler
Thanks @horchler,這裏是我前面提到的示例的更新鏈接:[通過轉換爲線性擬合非線性模型的陷阱](http://www.mathworks.com/help/stats/examples/pitfalls-in- fitting-nonlinear-models-by-transforming-to-linearity.html) – Amro