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

Problem mit handles bei fminsearch

 

chrishilism
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 29.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.03.2015, 19:45     Titel: Problem mit handles bei fminsearch
  Antworten mit Zitat      
Hey Leute,

ich weiß meine Frage ist ziemlich basic und es gibt dazu schon einige Posts im Forum, aber aus denen werde ich Leider auch nicht schlau.

Ich möchte eine Parameteroptimierung mit 6 Parametern mittels fminsearch durchführen.

Dazu habe ich mit ner Menge spielerei ganz gute Anfangswerte gefunden, die ich in meinem "Hauptskript" als Parameterverktor P speichere.

Code:
%Datensatz auslesen
w=datensatz_1_5Ac_28DOD(:,1);
Z_mess=datensatz_1_5Ac_28DOD(:,2)+1i*datensatz_1_5Ac_28DOD(:,3);

%Startvektor für Parameteroptimierung
p=[0.0006 0.0000005 0.00056 10000 0.0075 145000];


%Parameter optimieren
p_opt=fminsearch('cal',p,Z_mess,w);


Ich möchte nun dass fminsearch meinen Parametervektor p optimiert. Das ganze soll geschehen indem die Funktion S minimiert wird.

Code:
function S=cal(p,Z_mess,w)
temp=ones(size(w));

R_0=p(1)*temp;
L=p(2)*temp;
R_1=p(3)*temp;
C_1=p(5)*temp;
R_2=p(5)*temp;
C_2=p(6)*temp;


%Impedanzspektrum simulieren
Z_cal=R_0+1i.*w.*L+1./((1./R_1)+1i.*w.*C_1)+1./((1./R_2)+1i.*w.*C_2);

%Komplexes, nicht lineares least square errechnen
S=(real(Z_mess)-real(Z_cal))+(imag(Z_mess)-imag(Z_cal));


plot(real(Z_mess),imag(Z_mess),real(Z_cal),imag(Z_cal));
set(gba,'YDir','reverse');
drawnow;

end


Die findigen Mathematiker erkennen schon, dass S ein komplexes, lineares Least Square ist Smile.
Diese sollte im optimalfall 0 werden.

Ich bekomme folgende Fehlermeldung:
Error using cal (line 2)
Not enough input arguments.

Error in fminsearch (line 191)
fv(:,1) = funfcn(x,varargin{:});

Error in Optimierung (line 10)
p_opt=fminsearch(@cal,p,Z_mess,w);


Ich vermute ganz stark, dass das Problem darin liegt, dass handles benutze.
Ich weiß aber ehrlich gesagt nicht wie man sowas macht und werde wie gesagt nicht wirklich klug aus den bisherigen Forenposts.

Vielen Dank schonmal im Voraus.

PS. Sollten noch andere Fehler im Code sein immer her damit :'D
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 11.03.2015, 20:30     Titel:
  Antworten mit Zitat      
irgendwie siht das sehr komisch aus. welche version von matlab benutzt du? 'cal' siht sehr veraltet aus. und wie du fminsearch aufrufst... das siht auch nicht nach der doc aus. hast du die doc dazu gelesen? es giebt da auch ein beispiel zum curve fitting mittels fminsearch
http://de.mathworks.com/help/matlab.....ve%20fitting%20fminsearch
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 12.03.2015, 16:00     Titel: Re: Problem mit handles bei fminsearch
  Antworten mit Zitat      
Hallo chrishilism,

Konzentrieren wir uns auf den Fehler:
Code:
function S=cal(p,Z_mess,w)
temp=ones(size(w));
 


Error using cal (line 2)
Not enough input arguments.


Zitat:
Ich vermute ganz stark, dass das Problem darin liegt, dass handles benutze.

Wie kommst Du darauf? Statt 'cal' müsstest Du einfach nur @cal schreiben. Weitere Parameter werden so übergeben:
Code:
Fcn = @(p, Z_mess) cal(p, Z_mess, w);
p_opt = fminsearch(Fcn, p, Z_mess);


Allerdings taucht der Fehler in der Zeile 2 auf, und die ist:
Code:

Oder? Und das ist merkwürdig.

Gruß, Jan
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.