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

Per Fmincon 2 Werte angleichen

 

Martin Ewald

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.06.2012, 07:53     Titel: Per Fmincon 2 Werte angleichen
  Antworten mit Zitat      
Hallo,

Ich versuche mit der Funktion fmincon 2 Werte anzu gleichen d.h. ich habe eine Funktion mit 3 Variabeln für Fmincon die ich so bestimmt haben möchte so das der Funktionswert so nah wie möglich an einen Wert ran kommt den ich vorher bestimmt habe.

Zurzeit löse ich das ganze durch eine Kreuzkorrelation der Messreihe des Funktionswertes und der des errechneten Wertes von Fmincon. Das Funktioniert soweit auch ganz gut nur das Problem dabei ist das der Faktor nicht berücksichtigt wird bei einer Kreuzkorrelation und das macht mir die Rechnung ungenau.


hier mal der Code von der fmincon Funktion:
Code:

function f = myfun(x)
global n;
global C;
global p;
global S;
global u1;
global u;
global U1;


C(1)=x(1);
C(2)=x(2);
C(3)=x(3);
 
for j= 1:n
    U2(j)=U1(j)+(conj(S(j,1)/U1(j)))*(C(1)-C(2));
    u2(j)=u1(j)+(conj(p(j,1)/U1(j))-conj((u1(j)/U1(j)^2)*S(j,1)))*(C(1)-C(2));
   
    U3(j)=U2(j)+(conj(S(j,1)/U1(j))+conj(S(j,2)/U2(j)))*(C(2)-C(3));
    u3(j)=u2(j)+conj(((p(j,1)/U1(j))-(u1(j)/U1(j)^2)*S(j,1))+((p(j,2)/U2(j))-(u2(j)/U2(j)^2)*S(j,2)))*(C(2)-C(3));
   
    u(j)=C(1)*((S(j,1)*u1(j)/U1(j)^2)-(p(j,1)/U1(j)))+C(2)*((S(j,2)*u2(j)/U2(j)^2)-(p(j,2)/U2(j)))+C(3)*((S(j,3)*u3(j)/U3(j)^2)-(p(j,3)/U3(j)));
end

corrd1 =( xcov(u1,u,'biased')/(var(u1)*var(u))^0.5) ; % HIER MÖCHTE ICH DAS u1=u wird bestmöglich


f=-corrd1(430); % hier muss ich die bedingung ändern sodas u1=u


end


Martin Ewald

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.06.2012, 08:07     Titel:
  Antworten mit Zitat      
sorry hab die Lösung selbst gefunden war ne dumme frage eigentlich ist einfach:

x= abs(u1-u)

und x minimieren lassen das minimum ist 0 d.h. u1=u
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.06.2012, 08:59     Titel:
  Antworten mit Zitat      
Hallo,

etwas "schöner" wäre, (u1-u)^2 zu minimieren.

Hintergrund: fmincon ist gradientenbasiert und abs ist am Minimum nicht differenzierbar. In der Praxis würde ich nicht erwarten, dass das Probleme macht, aber es wäre halt schöner.

Zudem ist die lange Liste globaler Variablen unschön. Zur Abhilfe siehe hier:
http://www.mathworks.com/help/relea.....x/optim/ug/brhkghv-7.html

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