|
|
| Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.11.2011, 13:33
Titel: Fragen zu lsqnonlin
|
 |
Hallo,
1. ich arbeite momentan auch mit lsqnonlin. Ich bilde eine Exp-Funktion nach. Ich habe für unterschiedliche Ströme unterschiedliche Funktionsverläufe. Bei einigen Stömen(Kurvenverlauf bis max. 3mA) ist dieNachbildung besser als bei anderen Stömen(Kurvenverlauf bis max. 1.2mA).
Sobald ich nun die Toleranzen usw. für die kleineren Ströme feiner justiere, müsste ich doch genauso gute Ergebnisse haben?
Kann ich selber eine Error-Funktion erstellen die mir einfach genauere Kurvensimulationen liefert?
2. Arbeitet lsqnonlin automatisch mit der Summe der kleinsten Fehlerquadrate oder muss ich das selbst festlegen?
Edit by Martin: Bitte keine Doppelpostings. Danke!
|
|
|
|
|
|
| Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 15.11.2011, 13:48
Titel:
|
 |
|
die frage in 2 subforen aufzumachen is auch nich grade gut. einmal reicht. weiterhin kannst du die doc für lsqnonlin lesen. außerdem heist es ja LSQnonlin also denke ich mal das er auch die fehlerquadrate benutzt ^^
|
|
|
|
| Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.11.2011, 13:54
Titel:
|
 |
damit arbeite ich;) im doc steht:
"Rather than compute the value f(x) (the sum of
squares), lsqnonlin requires the user-defined function
to compute the vector-valued function"
was ich eben nicht verstehe, es arbeitet mit LSQ (fehler=sum((y-z)^2)) will aber zusätzlich eine Funktion?!?
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 15.11.2011, 14:32
Titel:
|
 |
Hallo,
Wenn du deine Frage so genau stellst wie zuletzt, ist es viel leichter zu antworten. Die Doku ist hier so zu verstehen:
Du sollst nicht || f(x) || übergeben (also die Norm der Quadrate selbst berechnen), sondern einen Vektor [f_1(x), f_2(x), ..., f_n(x)].
Die Güte der Resultate einer Optimierung hängt stark von den Startwerten ab. Zudem ist es möglich, dass ein Datensatz dem idealen Modell besser entspricht als ein anderer.
| Zitat: |
| Kann ich selber eine Error-Funktion erstellen die mir einfach genauere Kurvensimulationen liefert? |
Diese Frage verstehe ich nicht.
| Zitat: |
| Arbeitet lsqnonlin automatisch mit der Summe der kleinsten Fehlerquadrate oder muss ich das selbst festlegen? |
Es macht das automatisch, siehe erste Gleichung in der Doku.
Grüße,
Harald
|
|
|
|
| Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.11.2011, 14:49
Titel:
|
 |
ok, die antwort der zweiten Frage beantwortet mir die 1 Frage
dh, falls ich fminsearch anwende und als funktion LSQ angebe, sollten bei den selben Toleranzen die gleichen Ergebnisse erscheinen?!?
wo ich aber noch am grübeln bin:
"Die Güte der Resultate einer Optimierung hängt stark von den Startwerten ab. Zudem ist es möglich, dass ein Datensatz dem idealen Modell besser entspricht als ein anderer. "
dh für mich, sobald ich die unendlich besten startwerte und zusätzlich die kleinst möglichen Toleranzen gewählt habe, bekomme ich eine 99,9%ige genauigkeit?
|
|
|
|
| Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.11.2011, 14:53
Titel:
|
 |
ok, die antwort der zweiten Frage beantwortet mir die 1 Frage
dh, falls ich fminsearch anwende und als funktion LSQ angebe, sollten bei den selben Toleranzen die gleichen Ergebnisse erscheinen?!?
wo ich aber noch am grübeln bin:
"Die Güte der Resultate einer Optimierung hängt stark von den Startwerten ab. Zudem ist es möglich, dass ein Datensatz dem idealen Modell besser entspricht als ein anderer. "
dh für mich, sobald ich die unendlich besten startwerte und zusätzlich die kleinst möglichen Toleranzen gewählt habe, bekomme ich eine 99,9%ige genauigkeit?
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 15.11.2011, 15:25
Titel:
|
 |
Hallo,
| Zitat: |
| dh für mich, sobald ich die unendlich besten startwerte und zusätzlich die kleinst möglichen Toleranzen gewählt habe, bekomme ich eine 99,9%ige genauigkeit? |
So genau es eben geht. Wenn du 2 oder 3 Parameter und Hunderte Messpunkte hast, ist es i.d.R. nicht zu erwarten, dass die gefittete Kurve genau durch alle Punkte läuft.
Falls systematische Abweichungen zu erkennen sind (die ersten 50 Messpunkte liegen unterhalb der gefitteten Kurve, die nächsten 50 liegen drüber), kann man über Anpassung oder Verfeinerung des Modells nachdenken.
Grüße,
Harald
|
|
|
|
| Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.11.2011, 16:20
Titel:
|
 |
Ich verstehe, eine Anpassung an sich ist bei mir nicht möglich...
Zum Verständnis, bei lsqnonlin gebe ich einen Vektor vor, in meinem Fall in einer Funktion als Beispiel:
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 15.11.2011, 17:15
Titel:
|
 |
Hallo,
was willst du nun damit sagen?
Du solltest deine Zielfunktion an das von lsqnonlin vorgegebene Interface anpassen.
Datenübergabe ist generell möglich; da sollte man aber über anonymous function handles gehen.
Da dein Problem anscheinend mit nichtlinearer Regression zu tun hat, wäre auch ein Blick in lsqcurvefit sinnvoll. Da ist das Interface einfacher.
Grüße,
Harald
|
|
|
|
| Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.11.2011, 11:32
Titel:
|
 |
Hallo Harald,
komme mit dem lsqnonlin jetzt gut aus.
Zu fminsearch:
Selbe Problem möchte ich mit fminsearch lösen. Ich habe eine Funktion mit 3 Parametern zu bestimmen, Bsp: y(t)= a*(exp(t*b)) + (1-a)*(exp(t*c))
options = optimset('TolX',1e-15,'TolFun',10e-19,'DiffMinChange',1e-16);
[x,fval]=fminsearch(@myfun,Startwerte,options);
Ich möchte hier wie bei lsqnonlin zum minimum meiner Fkt. Dafür öffne ich eine Funktion:
function f = myfun(a,b,c) % Unbekannte Parameter
f = a*(exp(t*b)) + (1-a)*(exp(t*c));
Frage: Wo und wie soll ich die LSQ-Formel einbinden? in der Funktion oder im urspünglichen Skript?
|
|
|
|
| Titus |

Forum-Meister
|
 |
Beiträge: 871
|
 |
|
 |
Anmeldedatum: 19.07.07
|
 |
|
 |
Wohnort: Aachen
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.11.2011, 13:55
Titel:
|
 |
Hallo,
nicht ganz: die zu optimierende Funktion sollte einen Vektor mit den Parametern erhalten, also:
Aufrufen müsste man dann die Funktion mit
Titus
|
|
|
|
| Titus |

Forum-Meister
|
 |
Beiträge: 871
|
 |
|
 |
Anmeldedatum: 19.07.07
|
 |
|
 |
Wohnort: Aachen
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.11.2011, 13:57
Titel:
|
 |
Alternativ kann natürlich die Funktion auch nur "f" zurückgeben und man ruft bildet die Zielfunktion entsprechend anders:
Macht aber nicht wirklich einen Unterschied .
Titus
|
|
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
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.
|
|