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

Speichern von Vektoren aus einem for loop

 

Tom
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 16.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2010, 12:39     Titel: Speichern von Vektoren aus einem for loop
  Antworten mit Zitat      
Hallo,

ich benutze folgenden Code

for ll=1:120
...
[p1, p0, a1, b1]=ycfrcst(mu,phi,sigma,Y_dat,FF,FY2,tau);


save_p0(:,ll)=p0;
save_a1(:,ll)=a1;
save_b1(:,ll)=b1;

end


... steht nur dafür, dass er die Variablen für ycfrcst jedes mal neu schneidet. das funktioniert auch alles. in ycfrcst gibt es eine fmincon funktion die auch ebenfalls funktioniert. Wenn ich den loop einzeln durchlaufen lasse bekomme ich immer unterschiedliche Werte, wenn ich ihn aber insgesamt laufen lassen wird irgendwie nur der erste Vektor gespeichert und alle anderen nehmen seinen Wert an.
ich denke also mal, dass
save_p0(:,ll)=p0;
save_a1(:,ll)=a1;
save_b1(:,ll)=b1;
irgendwie nicht stimmt.

irgendjemand einen vorschlag wie ich die Werte, die ja in ycfrcst richtig ausgerechnet und angegeben werden richtig speichern kann?

LG
Tom
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.07.2010, 12:49     Titel:
  Antworten mit Zitat      
Hallo,

erstmal sieht das gut aus.
Ich sehe jedoch nicht, wie der Aufruf von ycfrcst vom Schleifenindex ll abhängt, und genau da wird das Problem sein.

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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 16.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2010, 13:01     Titel:
  Antworten mit Zitat      
hallo harald,

danke für die schnell antwort- mal wieder sehr logisch. kann man bei ycfrcst in die einzulesenen Variablen mit reinschreiben, dass sie sich ständig ändern und nicht die alten weiter benutzen? also im loop jeweils die neuen variablen reinlesen und nicht nur die erste behalten.
irgendwie so (natürlich funktioniert es so nicht):
[p1, p0, a1, b1]=ycfrcst( mu(:ll) ,phi,sigma,Y_dat,FF,FY2,tau);

oder sollte ich vorher alle variablen als matritzen speichern (mu ist z.B. ein vektor 1x8, phi aber eine 8x8 matrix) und dann nochmals in der funktion schneiden?

LG
Tom
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.07.2010, 13:17     Titel:
  Antworten mit Zitat      
Hallo,

es gibt zwei Möglichkeiten:
- entweder berechnest du sämtliche Parameter im voraus und indizierst dann (entweder Elemente oder Spalten, abhängig von ll), oder
- du überschreibst den alten Parameter immer mit dem neuen, von dem neuen ll abhängigen Parameter.

Die zweite Variante dürfte einfacher zu implementieren sein (ist eine Vermutung, da ich nicht weiß, wie das bei dir berechnet wird) und ist wohl auch speichereffizienter.

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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 16.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2010, 16:22     Titel:
  Antworten mit Zitat      
Hallo,

genau die zweite alternative würde ich gerne durchführen, allerdings weiß ich nicht, wie man die Variablen der Funktion jedes mal aufs neue einliest und überschreibt.

ich habe folgendes versucht:

save_mu(:,ll)=mu; % ich habe die drei Variablen erst mal gespeichert
save_phi(:,:,ll)=phi;
save_sigma(:,:,ll)=sigma; % die phi und sigma sind Matritzen





[p1, p0, a1, b1] = ycfrcst_tom(save_mu(:,ll),save_phi(:,:,ll),save_sigma(:,:,ll),Y_dat,FF,FY2,tau);
% jetzt würde ich gerne in der Funktion jedes mal eine neue Variable aufrufen, aber irgendwie klappt es nicht so recht


save_p0(:,ll)=p0;
save_a1(:,ll)=a1;
save_b1(:,ll)=b1;
%hinterher ganz normal speichern, ich glaube das klappt auch wenn die richtigen variablen erst mal eingelesen werden in die Funktion

LG
Tom
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.07.2010, 16:25     Titel:
  Antworten mit Zitat      
Hallo,

das wird langsam etwas verworren.

Ich sehe das Problem darin, dass mu, phi und sigma nicht verändert werden und damit in jeder Iteration gleich sind - und damit natürlich auch der Rest.

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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 16.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2010, 16:29     Titel:
  Antworten mit Zitat      
Du hast recht es wird ein bisschen verworren... Ich werde übers Wochenende nochmal drüber nachdenken.
Aber ja, das mu phi und sigma nicht jedes mal neu in die Funktion geladen werden, ist das Problem. Die Iterationen sind gleich und die Ergebnisse sind somit alle gleich den ersten 3 variablen.
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.