【发布时间】:2013-05-22 14:10:05
【问题描述】:
我有一个数据数组,绘制时看起来像这样。
我需要使用polyfit 命令来确定大致介于1.7 和2.3 之间的时间的最佳拟合指数。我还必须将这个 exponential 拟合与简单的 linear 拟合进行比较。
我得到了公式Temp(t) = Temp0 * exp(-(t-t0)/tau),其中t0 是对应于温度Temp0 的时间(我可以选择从哪里开始我的曲线拟合,但它必须限制在大约 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。
-
谢谢@horchler,这是我之前提到的示例的更新链接:Pitfalls in Fitting Nonlinear Models by Transforming to Linearity
标签: matlab curve-fitting