Verfasst am: 04.08.2015, 17:04
Titel: Messwerte durch lqcurvefit an eine vorgegebene Zielfunktion
Hallo,
ich bin blutiger Matlab Laie und habe folgendes Problem:
Ich habe eine vorgegebene Funktion mit 3 unbekannten Parametern, der den Zusammenhang zwischen y und x beschreibt:
y= a(1)+a(2)*ln(x)+a(3)*T*ln(x).
x=[25.01 25.424 25.254 ...etc]
y=[114 118 141 ...etc]
T ist die Temperatur, bei welchem der Versuch gefahren wurde, also eine konstante Größe. Ich habe dazu Messwerte aufgenommen und möchte die Parameter a(1),a(2), a(3) der Funktion finden.
Bei vorgegebenen x und y (Messdaten) soll der Fehler zwischen der gerechneten Funktions-y und gegebenen y möglichst klein werden. (Methode der kleinste Quadrate)
Ich habe im Forum ein wenig gestöbert und habe versucht die Lösung in diesem Beitrag
hallo. sehr schöner erster post. aufs wesentliche beschränkt und alles vorhanden.
wozu hast du diese zeile im code?
Zitat:
XCO2_fit = a(1)+a(2)*ln(x)+a(3)*18*ln(x)
sie erzeugt die fehlermeldung da a nicht bekannt ist. hat aber keinen weiteren nutzen oder?
wenn du die zeile löscht könnte ich mir vorstellen das alles klappt.
anstatt eine extra funktion zu verwenden kannst du auch anonyme funktionen verwenden. ist bei kleinen funktionen manchmal schneller überschaubar aber hat erstmal nix mit deinem problem zu tun. mit hilfe von anonymen funktionen lässt sich dann auch einfach die übergabe weiterer parameter regeln falls du T zb in dein skript einbauen willst.
Code:
% Rahmenprogramm zur Bestimmung der Parameter
clear
datei=fopen('fuenfundzwanzig.dat'); %Das ist meine Messwerttabelle
lsqcurvefit stopped because the final change in the sum of squares relative to
its initial value is less than the default value of the function tolerance.
a2 ist halt anders ich kann ja a2 und a3+25 zu einer variablen einfach zusammen fassen. es giebt ja sowieso keinen vorgeschriebenen zusammenhang da.
dann wären es nur noch2 parameter die du optimieren musst.
startwerte bekommt man durch gutes schätzen wenn das nicht geht kann man auch mehrmals mit verschiendenen zufälligen starten.
_________________
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.