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

'Display', 'Iter' direkt nach Excel exportieren

 

Hilfsbedürftiger
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 10.12.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.12.2014, 18:07     Titel: 'Display', 'Iter' direkt nach Excel exportieren
  Antworten mit Zitat      
Hallo,

cih habe ein Frage zum exportieren von Matlabdaten nach Excel.
Ich kenne die Funktion xlswrite und wende diese auch an, allerdings kann man damit meines Wissens nach nur Matrizen nach Excel exportieren.
Ich würde gerne wissen ob es die Möglichkeit gibt sofort bei der Ausführung einer Funktion die Werte in eine Excel Datei zu schreiben.

Um konkreter zu werden, ich führe eine Optimierung einer Funktion mit fmincon durch. Mithilfe der optimoptions Funktion lasse ich mir die daten nach jedem Iterationsschritt im Command Window ausgeben:
options=optimoptions('fmincon','display','iter')
Kann ich mir dieses Display direkt nach Excel expotieren?
Wenn ja wie? Mache das bis jetzt mit Copy/Paste was nicht sehr elegant ist.

Danke für eure Hilfe
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: 21.12.2014, 10:57     Titel:
  Antworten mit Zitat      
Hallo,

mit dem diary-Befehl kannst du diese Ausgabe in eine Textdatei schreiben lassen.
Wenn es eine Excel-Datei sein muss, kannst du die Ausgabe von dort wieder einlesen (fgetl / textscan) und dann nach Excel schreiben (xlswrite).

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

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 10.12.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.12.2014, 16:21     Titel:
  Antworten mit Zitat      
Danke für deine Hilfe, du bist in diesem Forum ja echt der Retter in der Not.
Ich werde es gleich ausprobieren.
Private Nachricht senden Benutzer-Profile anzeigen
 
Hilfsbedürftiger
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 10.12.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.12.2014, 17:23     Titel:
  Antworten mit Zitat      
Kann eigentlich auch die Informationenen die im Comand window ausgegebenen werden direkt in einer Tabelle im Workspace Speichern?
Denn dann könnte ich diese Tabelle ja mit writetable exportieren.

Mich würde auch interessieren wie lange Fmincon gerechnet hat, bei simulannealbnd wird das in der output datei mit angegeben, das gibts bei fmincon in der Form aber nicht kann ich das über Tic toc iwei erreichen?


Danke
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: 22.12.2014, 18:42     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Kann eigentlich auch die Informationenen die im Comand window ausgegebenen werden direkt in einer Tabelle im Workspace Speichern?

Ist mir nicht bekannt.
Dein Anwendungsfall ist eher ungewöhnlich, und mir ist nur die eine Möglichkeit bekannt.

Zitat:
Mich würde auch interessieren wie lange Fmincon gerechnet hat, bei simulannealbnd wird das in der output datei mit angegeben, das gibts bei fmincon in der Form aber nicht kann ich das über Tic toc iwei erreichen?

Klar:
Code:
tic;
% fmincon-Aufruf
t_fmincon = toc;


Im übrigen muss man sagen, dass der Vergleich nicht ganz fair ist, da fmincon ein lokaler und simulannealbnd ein globaler Optimierer ist. Zudem schlägt MathWorks in der Hilfe vor, statt Simulated Annealing zunächst andere Wege zu versuchen:
http://de.mathworks.com/help/gads/choosing-a-solver.html#bsa_e9p

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

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 10.12.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.12.2014, 20:40     Titel:
  Antworten mit Zitat      
Erstmal Danke nochmal.

Mir ist auch aufgefallen, dass Simulated Anneling zu den Globalen Verfahren gezählt wird(was mir unter anderem auch hilft da ich eigentlich ein Globales Minimum suche) allerdings steht bei der Erläuterung zu Simmulated Annealing folgendes:

"x = simulannealbnd(fun,x0) starts at x0 and finds a local minimum x to the objective function specified by the function handle fun. The objective function accepts input x and returns a scalar function value evaluated at x. x0 may be a scalar or a vector."

Wenn ich Simulated Annealing lange genug rechnen lasse, sollte es dann tatsächlich das Globale Optimum finden?
Private Nachricht senden Benutzer-Profile anzeigen
 
Hilfsbedürftiger
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 10.12.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.12.2014, 11:11     Titel:
  Antworten mit Zitat      
Ich hab jetzt versucht es über die output Funktion zu regeln da taucht aber ein Fehler auf vielleicht kann mit jemand sagen was ich falsch mache.

lb=[0.1 0.1 0.01 0.005 0 2 2 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001];
ub=[0.8 0.5 0.05 0.05 90 100 15 0.01 0.01 0.01 0.01 0.01 0.01];
Zufallsparameter;
x0=zufallsparameter;
xlswrite('fmincon.xlsx',zufallsparameter,'Interior-Point3','B2')
A=[];
b=[];
Aeq=[];
beq=[];
nonlcon=[];
options=optimoptions('fmincon','Algorithm','interior-point','MaxIter',2,'MaxFunEvals',1000,'Display','iter','OutputFcn','outfun');
tic;
[x,fval,exitflag,output]=fmincon(@anpassung,x0,A,b,Aeq,beq,lb,ub,nonlcon,options);
t_fmincon=toc;
Ergebnisse;

Über optimoptions wird die outputFcn aufgerufen, welche ich in einer function m.file gespeichert hab:

function stop = outfun(x,optimValues,state)
stop = false;

switch state
case 'init'
hold on
case 'iter'
% Concatenate current point and objective function
% value with history. x must be a row vector.
history.fval = [history.fval; optimValues.fval];
history.x = [history.x; x];
history.iterration =[history.iteration;optimValues.iteration];
history.firstorderopt=[history.firstorderopt;optimValues.firstorderopt];
history.funccount=[history.funccount;optimValues.funccount];
history.stepsize=[history.stepsize;optimValues.stepsize];
history.constrviolation=[history.constrviolation;optimValues.constrviolation];
case 'done'
hold off
otherwise
end
end

Ich bekomme jedoch diese Fehlermeldung:
At compilation, "history" was determined to be a variable and this variable is uninitialized. "history" is also a function name and
previous versions of MATLAB would have called the function. However, MATLAB 7 forbids the use of the same name in the same context
as both a function and a variable.

Error in outfun (line 10)
history.fval = [history.fval; optimValues.fval];

Error in callAllOptimOutputFcns (line 13)
stop(i) = feval(OutputFcn{i},xOutputfcn,optimValues,state,varargin{:});

Error in barrier>callOutputAndPlotFcns (line 911)



Error in barrier/nlpInterfaceFcn (line 801)



Error in barrier (line 329)



Error in fmincon (line 818)
[X,FVAL,EXITFLAG,OUTPUT,LAMBDA,GRAD,HESSIAN] = barrier(funfcn,X,A,B,Aeq,Beq,l,u,confcn,options.HessFcn, ...

Error in Fmincon1_1 (line 13)
[x,fval,exitflag,output]=fmincon(@anpassung,x0,A,b,Aeq,beq,lb,ub,nonlcon,options);

Ich hoffe mir kann jemand weiterhelfen danke und frohe Weihnachten.
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: 24.12.2014, 13:01     Titel:
  Antworten mit Zitat      
Hallo,

zur vorherigen Frage:
Kein Algorithmus der Welt garantiert ein globales Minimum. Wenn man einen Algorithmus länger laufen lässt, erhöht sich zwar die Wahrscheinlichkeit, aber man bekommt nie eine Garantie.
Zur Funktionsweise von Simulated Annealing siehe z.B. hier:
http://de.mathworks.com/help/gads/h.....ated-annealing-works.html

Beim Code ist dann das Problem, dass die Variablen nicht initalisiert werden. Das könnte z.B. im init-Teil gemacht werden:

Code:
switch state
case 'init'
history.fval = [];
case 'iter'
history.fval = [history.fval; optimValues.fval];


Bitte in Zukunft die Code-Umgebung nutzen, damit das übersichtlicher dargestellt wird.

Grüße und schöne Weihnachten,
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 - 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.