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

OutputFnc für fminsearch

 

rebbalmat0887
Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 08.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2016, 10:31     Titel: OutputFnc für fminsearch
  Antworten mit Zitat      
Hallo,

ich benutze fminsearch um Parameter eines Simulink-Modells an Messdaten anzufitten. Ich habe dazu bereits einen Thread aufgemacht, der sich hier:

Code:

http://www.gomatlab.de/abbruchkriterium-fuer-fminsearch-greift-nicht-t41345.html
 


befindet. Leider tritt während der Optimierung ein Fehler auf und ich brauche dringend die optimierten Parameter pro Iterationsschritt WÄHREND die Simulation läuft. Habe es mit einer OutputFnc probiert aber so wie ich es programmiert habe, gibt Matlab die Iterationsschritte nur nach beendetem Algorithmus an. Ich brauch sie aber während der Simulation, damit ich das Simulink-Modell mit diesen Werten testen kann. Sonst finde ich den Fehler nicht.

hier mein verwendeter code:

Code:

function [x fval history] = myproblem(x0)
    history = [];
    options = optimset('Display','iter','TolFun',1,'MaxIter',60,'outputFcn',@myoutput);
    [x fval] = fminsearch(@objfun, x0,options);
       
    function stop = myoutput(x,optimvalues,state);
        stop = false;
        if isequal(state,'iter')
          history = [history; x];
        end
    end
   
    function z = objfun(x)
      z = berechneEGlobal(x);
    end
end
 


Mit

Code:

x0 = [950 0.4 115 81000];
[x fval history] = myproblem(x0)
 


starte ich das ganze. Schonmal vielen Dank im Voraus für eure Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen


rebbalmat0887
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 08.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2016, 16:13     Titel:
  Antworten mit Zitat      
ich hoffe, jemand kann mir helfen. es ist echt dringend. ich hänge die dateien auch nochmal an. die haben z.t. den gleichen namen wie unter dem angegeben link aus meinem post oben, sind aer verschieden. die datein jetzt sind für ein nichtlineares system.

danke für die hilfe

berechneSchnittpunkte.m
 Beschreibung:

Download
 Dateiname:  berechneSchnittpunkte.m
 Dateigröße:  1.29 KB
 Heruntergeladen:  225 mal
berechneNullmatrizen.m
 Beschreibung:

Download
 Dateiname:  berechneNullmatrizen.m
 Dateigröße:  5.22 KB
 Heruntergeladen:  261 mal
berechneGefiltertesSignal.m
 Beschreibung:

Download
 Dateiname:  berechneGefiltertesSignal.m
 Dateigröße:  1.95 KB
 Heruntergeladen:  252 mal
berechneEGlobal.m
 Beschreibung:

Download
 Dateiname:  berechneEGlobal.m
 Dateigröße:  2.71 KB
 Heruntergeladen:  261 mal
berechneAmpPhs.m
 Beschreibung:

Download
 Dateiname:  berechneAmpPhs.m
 Dateigröße:  9.72 KB
 Heruntergeladen:  247 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
rebbalmat0887
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 08.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2016, 16:16     Titel:
  Antworten mit Zitat      
Das m-file "Start" einfach laufen lassen. In der funktion "myproblem" muss noch was geändert werden aber ich weiß nicht so richtig wie.
danke

Start.m
 Beschreibung:

Download
 Dateiname:  Start.m
 Dateigröße:  197 Bytes
 Heruntergeladen:  247 mal
simNichtlinear.slx
 Beschreibung:

Download
 Dateiname:  simNichtlinear.slx
 Dateigröße:  15.78 KB
 Heruntergeladen:  196 mal
myproblem.m
 Beschreibung:

Download
 Dateiname:  myproblem.m
 Dateigröße:  455 Bytes
 Heruntergeladen:  240 mal
isEven.m
 Beschreibung:

Download
 Dateiname:  isEven.m
 Dateigröße:  214 Bytes
 Heruntergeladen:  236 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
rebbalmat0887
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 08.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.07.2016, 17:25     Titel:
  Antworten mit Zitat      
Habs gelöst. falls es wen interessiert, hier ist der Code:

Code:

 function stop = outfun(x, optimValues, state)
persistent fminval
if isempty(fminval)
    fminval=optimValues.fval;
    assignin('base', 'params',x)
end
if fminval>optimValues.fval
    fminval=optimValues.fval;
    assignin('base', 'params',x)
    disp(x)
end
stop = false;
end
 


hatte ich irgwo hier im forum gefunden.

Grüße!
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 - 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.