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

Plot von lsqnonlin() nach jeder Iteration

 

bp89
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 01.11.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.11.2018, 13:31     Titel: Plot von lsqnonlin() nach jeder Iteration
  Antworten mit Zitat      
Guten Tag zusammen,

ich löse ein nicht lineares Ausgleichsproblem mit dem Gauß-Newton-Algorithmus (von "Hand") und im Vergleich dazu mit lsqnonlin(). Letzteres wie folgt:
Code:
fun=@(x)(x(1)+x(2).*t.^x(3))-y;     %Zu untersuchende Funktion nach X
x0 = [a,b,n];                       %Zuweisung Startparameter
options = optimoptions('lsqnonlin','Display','iter','FunctionTolerance', tol);
[x,resnorm,residual,exitflag,output] = lsqnonlin(fun,x0,[],[],options);

Anschließend plotte ich die Funktion mit dem errechneten Lösungsvektor x
Code:
figure('Name','Matlab-Funktion','NumberTitle','off');
plot(t,y,'ko')                   %t und y ergeben meine 2D Punktwolke
hold on
tlist = linspace(t(1),t(end));
plot(tlist,(x(1)+x(2).*tlist.^x(3)),'r-')
xlabel t-Werte
ylabel y-Werte
title('Funktion lsqnonlin')
legend('Werte','Best-Fit')
hold off

Nun ist es aber so, dass hier die optimale Lösung verwendet wird. Ist es möglich nach jeder Iteration von lsqnonlin() die Funktion zu plotten? Also das man z.B. 12 Abbildungen/Figures für 12 Iterationen erhält, die den Anpassungsverlauf zeigen?

Viele Grüße
Benjamin
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.11.2018, 15:56     Titel:
  Antworten mit Zitat      
Hallo,

in optimoptions die Option PlotFcn verwenden.

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
bp89
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 01.11.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.11.2018, 18:55     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für den Tipp. Hatte das mit PlotFcn versucht, da kam aber nicht mein gewünschtes Ergebnis raus. ABER mit OutputFcn habe ich es lösen können
Code:
fun=@(x)(x(1)+x(2).*t.^x(3))-y;     %Zu untersuchende Funktion nach X
x0 = [a,b,n];                       %Zuweisung Startparameter
options = optimoptions('lsqnonlin','Display','iter','FunctionTolerance', tol,'OutputFcn', @outfun);
[x,resnorm,residual,exitflag,output] = lsqnonlin(fun,x0,[],[],options);

Und dazu die Funktion
Code:
function stop = outfun(x,optimValues,state)
        stop=false;
        switch state
            case 'iter'
               
                figure;
                hold on;
                grid on;
                plot(t,y,'ko')
                plot(t,(x(1)+x(2).*t.^x(3)), 'r');
                xlabel t-Werte
                ylabel y-Werte
                legend('Werte','Best-Fit')
                hold off
               
            case 'interrupt'
               
            case 'init'
               
            case 'done'
               
            otherwise
        end
    end

Somit habe ich nach jeder Iteration meine Abbildungen Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



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 - 2024 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.