我有一个数据数组,当绘制时看起来像这样。
我需要使用 polyfit
命令来确定大致在 1.7
和 2.3
之间的时间段内最佳拟合指数。我还必须将此 指数 拟合与简单的 线性 拟合进行比较。
给定方程式为 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)
我的指数拟合结果看起来像这样
![exponential fit](https://istack.dev59.com/oNiik.webp)
![linear fit](https://istack.dev59.com/Ow52c.webp)
circshift
函数来帮助解决,但我在阅读帮助文件后无法理解该命令的适用性。