WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Verwendung von "lsqnonlin" zur Kalibrierung

 

Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.02.2015, 16:44     Titel:
  Antworten mit Zitat      
Hallo,

auf welchen Wert hast du FinDiffRelStep gesetzt?

Wie ist die relative Toleranz (RelTol) in Simulink eingestellt?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen


Lieblingsmaus
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.02.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.02.2015, 16:58     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke, dass du mich nicht aufgibst! Smile

Ich habe folgene Optionen gesetzt:

Code:
optimoptions('lsqnonlin', 'FinDiffRelStep', 1e-3);


da es ja hieß, dass es größer sein sollte als sqrt(eps)=1.4901e-08 und dies ja in der Hilfe angegeben war (ich hatte auch größere Werte ausprobiert...).

'TolFun' habe ich auf den Wert 1e-12 wie in deiner Empfehlung und

'TolX' ist bei mir auf 0.001 gesetzt (auch mit 1e-12 gibt er mir wieder die Startwerte zurück).

Vielen lieben Dank!

Sandra
Private Nachricht senden Benutzer-Profile anzeigen
 
Lieblingsmaus
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.02.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.02.2015, 17:12     Titel:
  Antworten mit Zitat      
Hallo Harald,

entschuldige die Relative tolerance für Simulink hatte ich noch vergessen: 1e-3.
(Die vorherigen Einstellungen waren für lsqnonlin.)

Entschuldige.

Viele Grüße,
Sandra
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.02.2015, 22:50     Titel:
  Antworten mit Zitat      
Hallo,

die Einstellung für FinDiffRelStep ist gut.
Bitte noch versuchen, die Einstellung für die relative Toleranz in Simulink anzupassen, z.B. auf 1e-6 oder sogar 1e-9.

Hintergrund ist, dass die Simulationsfehler in Simulink zu Fehlern in den geschätzten Gradienten führen - genau ist das im Link beschrieben.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Lieblingsmaus
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.02.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2015, 10:15     Titel:
  Antworten mit Zitat      
Hallo Harald,

leider gibt er immer noch die Startwerte zurück. Ich werde mir wahrscheinlich etwas anderes einfallen lassen müssen Sad.

Ich greife nun auch nicht mehr die Position ab, sondern die Geschwindigkeit, da hier die Jacobimatrix bei mir nicht 0 ist. Jedoch hilft mir dies leider auch nicht weiter.

Viele Grüße,

Sandra
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.03.2015, 10:36     Titel:
  Antworten mit Zitat      
Hallo,

Was passiert, wenn du andere Startwerte angibst? Werden auch dann die Startwerte zurückgegeben? Was ist die Diagnosemeldung des Solvers?

Du könntest es z.B. auch mal mit patternsearch (Global Optimization Toolbox) versuchen.

Ohne das Problem vor sich zu haben ist das leider ein bisschen Stochern im Nebel...

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Lieblingsmaus
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.02.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2015, 13:09     Titel:
  Antworten mit Zitat      
Hallo Zusammen,

also bei mir hatte es nichts mit der Jacobimatrix zu tun. Harald hat den Fehler gefunden und ich bin ihm sehr dankbar! Vielen herzlichen Dank!

Ich poste hier nun noch den Fehler, da es bei mir immer, wie bei den anderen auch, die Startwerte zurück gegeben hat. Bei mir hat der Input F jedoch noch gefehlt und vielleicht passtiert manchem oder mancher der selbe Fehler.

Hoffe es hilft euch beim Lösen eurer Probleme:
Code:
[x, resnorm]=lsqnonlin(@(F)simopterror(F, simtime, anregung, i, y, tabtast), xo, [],[], options);


Das fett gedruckte F hat noch gefehlt! ... simopterror(F, ...

In simopterror wird der Fehler berechnet:

Code:
function F=simopterror(F, simtime, anregung, i, y, tabtast)

[~,~,ymodell]=sim('simulinkmodell', [0 simtime]);

F=ymodell-y

end


Der Code ist jetzt nur dafür da, dass ihr den Fehler nachvollziehen könnt. Ich hatte jetzt nicht den Anspruch, dass er funktioniert, es fehlen ja einige Schritte aus meinem Code.

Vielen herzlichen Dank noch mal an dich Harald!

Grüße,
Sandra
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.