Verfasst am: 28.10.2019, 10:37
Titel: lsqcurvefit Ausgleichskurve durch Messpunkte zwingen
Hallo zusammen,
Ich habe mehrere Messwerte die ich mit lsqcurvefit fitten lasse. Jetzt möchte ich die Kurve durch einen bestimmten Punkt zwingen, von dem ich weiß, dass dieser richtig ist. Weiß aber nicht so recht wie ich das anstellen solle. Ich habe leider keine aktuellen Beiträge dazu gefunden.
wie sieht das Modell denn aus?
Wenn das ohne größeren Aufwand möglich ist, wäre es am einfachsten, die entsprechenden Modellparameter zu eliminieren.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
function ydata=sorptio(x,xdata)% Funktion fitten
D=x(1);
h=x(2);
t=xdata(:);
n=0:11;
S=(2*n+1).^(-2) .*exp((-((2*n+1).^2 * pi^2 * D .*t)/(h^2)));
S=sum(S,2);
ydata=1-S*(8/(pi^2));
ydata=reshape(ydata,size(xdata));
end
function ydata= kurve ( zdata,D,h)% Funktion mit berechneten Parametern D und h darstellen
t=zdata(:);
n=0:11;
S=(2*n+1).^(-2) .*exp((-(2*n+1).^2 * pi^2 * D .*t)/(h^2));
S=sum(S,2);
ydata=1-S*(8/(pi^2));
ydata=reshape(ydata,size(zdata));
end
da sollte es möglich sein, h durch Einsetzen des Punkts und Auflösen der Gleichung in Abhängigkeit von D anzugeben? Dann müsste man nur noch D finden.
Alternative: fmincon verwenden und die Bedingung, dass die Kurve durch den Punkt gehen muss, als Nebenbedingung festlegen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
bei lsqcurvefit meines Wissens nicht. Beim verwandten lsqnonlin kannst du auf 0 zu bringenden Komponenten mit einem Gewichtsvektor multiplizieren.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
ein Problem übrigens bei dem Modell: wenn ich das richtig sehe, hast du eigentlich nur einen Parameter D/h^2.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
hast du eine Idee wie ich es dann hinbekommen, dass ich D einzeln berechne? Denn h habe ich nicht. Habe es schon versucht mit umstellen und einsetzen in die Formel, aber dann kürzt sich bei mir das D raus. Möglicherweise habe ich es nur falsch umgestellt, aber bin mir bei dem zusammenfassen der Summenfunktion nicht ganz sicher.
so wie ich das sehe, geht das allein mit dem Modell nicht. Wenn du h verdoppelst und D vervierfachst, kürzt sich das raus und es kommt wieder dasselbe raus. Du hast also im Grunde nur einen Parameter: D/h^2. Wenn dann ein D gegeben hast, kannst du ein h daraus ermitteln - oder umgekehrt. Beide aus Daten bestimmen geht jedenfalls nicht.
Meine anfängliche Idee, h aus dem Datenpunkt zu berechnen, funktioniert bei diesem Modell nicht. Ich war durch die vielen (teils unnötigen) Klammern durcheinander geraten.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.