Ich habe ein Array von Daten, die, wenn geplottet, so aussieht.MATLAB-Kurvenanpassung, exponentiell gegenüber linear
Ich brauche den polyfit
Befehl verwenden, um die am besten passende exponentielle für die Zeit etwa zwischen 1.7
und 2.3
zu bestimmen. Ich muss auch diese exponentiellen passen zu einem einfachen linear passen.
ich die Gleichung Temp(t) = Temp0 * exp(-(t-t0)/tau)
gegeben habe, wo t0
die Zeit, um entsprechende Temperatur ist Temp0
(Ich kann wählen, wo meine Kurvenanpassung beginnen, aber es muss in etwa zwischen 1,7 und 2,3 auf den Bereich beschränkt werden). Hier ist mein Versuch.
% 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)
Meine Exponentialfit endet wie suchen. Meine lineare Passform sieht wie aus. (praktisch identisch). Was mache ich falsch? Sollten die beiden Passungen so ähnlich sein? Mir wurde gesagt, dass circshift
helfen kann, aber ich konnte die Anwendbarkeit des Befehls nach dem Lesen der Hilfedatei nicht erfassen.
Link von @Amro scheint von The MathWorks beschädigt worden zu sein. Aktualisierte Version ist [hier] (http://www.mathworks.com/help/stats/examples/curve-fitting-and-distribution-fitting.html). – horchler
Danke @horchler, hier ist der aktualisierte Link zu dem Beispiel, das ich zuvor erwähnt habe: [Probleme bei der Anpassung nichtlinearer Modelle durch Transformation an die Linearität] (http://www.mathworks.com/help/stats/examples/pitfalls-in- fitting-nonlinear-models-by-transformation-to-linearity.html) – Amro