У меня есть массив данных, который при построении выглядит так.MATLAB-кривая, экспоненциальная и линейная
мне нужно использовать команду polyfit
, чтобы определить наиболее подходящую экспоненту времени примерно между 1.7
и 2.3
. Я также должен сравнить это экспоненциальный подходит к простому 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, похоже, была нарушена MathWorks. Обновленная версия [здесь] (http://www.mathworks.com/help/stats/examples/curve-fitting-and-distribution-fitting.html). – horchler
Спасибо @horchler, вот обновленная ссылка на пример, который я ранее упомянул: [Ошибки в установке нелинейных моделей путем преобразования в линейность] (http://www.mathworks.com/help/stats/examples/pitfalls-in- фитинг-нелинейные модели-by-transforming-to-linearity.html) – Amro