|
|
Speichern von Vektoren aus einem for loop |
|
Tom |

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 16.06.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.07.2010, 12:39
Titel: Speichern von Vektoren aus einem for loop
|
 |
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
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 23.07.2010, 12:49
Titel:
|
 |
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
|
|
|
Tom |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 16.06.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.07.2010, 13:01
Titel:
|
 |
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
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 23.07.2010, 13:17
Titel:
|
 |
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
|
|
|
Tom |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 16.06.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.07.2010, 16:22
Titel:
|
 |
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
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 23.07.2010, 16:25
Titel:
|
 |
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
|
|
|
Tom |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 16.06.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.07.2010, 16:29
Titel:
|
 |
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.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|