Verfasst am: 03.11.2011, 10:37
Titel: parameter durch optimierer vergleichen
habe messedaten und muss ich die pargameter für ein modell finden. anschließend eine güte funktion finden um die gefundene parameter durch ein optimierer zu vergleichen . kann jemand mir dabei helfen
ich soll ein modell eines system anhand von vorhandenen messwerten numerisch aproximieren.hierzu soll geeignete gütefunktion hergeleitet. die system matrizen habe ich schon gefunden. jetzt soll die güte funktion gefunden werden. danke jan
das ist zwar etwas detaillierter, aber wo genau suchst du Unterstützung?
In welcher Form liegt das Modell vor? MATLAB? Simulink? Sollen lediglich Parameter identifiziert werden oder geht es um mehr?
Die Gütefunktion ergibt sich aus deiner Anwendung und sollte also von dir kommen. Wenn dir gar nichts besseres einfällt, kannst du die Summe der quadratischen Abweichungen von Simulation und Messdaten verwenden.
Bitte die Frage möglichst präzise stellen und dabei auch daran denken, dass wir deine Anwendung ja nun nicht vor uns haben; sonst wird es schwierig, dir zu helfen.
versuche dich bitte so klar wie möglich auszudrücken. Verstehst du deinen letzten Beitrag denn, wenn du ihn nochmal durchliest?
Da du leider immer noch nicht wirklich die Rückfragen beantwortet hast, versuche ich es mal anders.
Du brauchst:
simdata - die simulierten Daten
modell - eine Funktion, die Modellparameter a und Systemeingang x entgegennimmt und Systemausgang y zurückgibt, also der Form
die simulierte daten habe ich (nur mit parameter). die function habe ich noch probleme.
die function lautet
Dx= A *x + B*u_messdaten
y_simulierte=C'*x
Die Matrizen A,B,C habe ich schon gefunden.
ich muss y_simulierte berechnen.
dazu möchte ich die kleinste quadratische abweichung verwenden.
meine frage ist:
wie kann ich das alles in matlab formulieren mit betrachtung von lsqnonlin
ich habe die U_mess und Y_mess zu verfügung.
die kleinste quadratische abweichung muss zwischen (Y_sim-Y_mess) sein.
meine modell hat folgende gleichung
Dx= A*x+B*U_mess
Y_sim=C.x.
Die Matrizen A,B,C haben 3x3 dimension und enthalten nur paramater (p1.....bis p27).
diese Parameter sollen gefunden werden.
ich glaube diese kann ich finden. in dem ich eine function definiere und dann mit Lsqnonlin lösen
danke Harald
jetzt ist mir immerhin klar, was du eigentlich erreichen willst. Ich würde dir aber dringend raten, an deinen Formulierungen zu arbeiten. Die Aussagen "Die Matrizen A,B,C habe ich schon gefunden" und "Die Matrizen A,B,C haben 3x3 dimension und enthalten nur paramater (p1.....bis p27).
diese Parameter sollen gefunden werden." widersprechen sich nämlich vollkommen.
Da letzteres im Gesamtkontext sinnvoll ist, gehe ich von letzterem aus.
ich kann nur nochmal sagen, dass du an deinen Formulierungen arbeiten solltest. Nach dem, was du gesagt hast, bin ich nämlich davon ausgegangen, dass du jetzt weißt, wie du das Problem angehen musst.
Ungetesteter Ansatz mit 27 Unbekannten, die auf die Matrizen "aufgeteilt" werden.
Code:
function abweichung = simulation(p, u_mess, y_mess)
A = reshape(p(1:9), 3, 3);
B = reshape(p(10:18), 3, 3);
C = reshape(p(19:27), 3, 3);
x = ode45(@(x) A*x + B*u_mess, zeit, y0); % Simulationszeitraum und Anfangswerte sind einzusetzen
y_simuliert = C' * x;
abweichung = y_simuliert - y_mess
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.