|
|
Ergebnisse aus for-Schleife in Matrix abspeichern |
|
Mr.Burns |

Forum-Anfänger
|
 |
Beiträge: 25
|
 |
|
 |
Anmeldedatum: 26.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.10.2013, 10:53
Titel: Ergebnisse aus for-Schleife in Matrix abspeichern
|
 |
Hallo liebes Forum,
ich habe folgende 2 Schleifen geschrieben, das Problem, das ich habe ist bei beiden das gleiche. Matlab berechnet alles einwandfrei, und zeigt die jeweiligen Ergebnisse auch im Command Window an. Allerdings wird immer nur das Ergebnis aus dem letzten Rechenschritt in F bzw. G abgespeichert.
Dabei ist M eine Matrix mit 8 Spalten. Die Jahresvektoren gehen von 1992 bis 2012 und Monate logischerweise von 1 bis 12.
1. Schleife:
Es soll der Mittelwert für jeden Monat berechnet werden (deshalb 21*12 = 252 Zeilen für F bzw. G) und abgespeichert werden
2. Schleife:
Bei dieser Schleife möchte ich Jahresmittelwerte berechnen, also für jedes Jahr von 1992 bis 2012 immer 3 Werte (Mittel über die letzten 3 Spalten aus M):
Wie kann ich diese Ergebnisse in den Matrizen F/G abspeichern?
Vielen Dank schon mal!
lg
Mr.Burns
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.500
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.10.2013, 11:08
Titel:
|
 |
Hallo,
du musst natürlich in F bzw. G indizieren.
Im zweiten Fall:
Im ersten Fall ist es komplizierter, da du für den Index eine relativ komplizierte Kombination aus i und j erzeugen müsstest. Da wäre ich für ein 3D-Array, etwa:
Grüße,
Harald
|
|
|
Mr.Burns |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 25
|
 |
|
 |
Anmeldedatum: 26.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.10.2013, 11:33
Titel:
|
 |
Hallo Harald,
beim 2. Fall funktioniert dein Vorschlag so aber nicht. Nach deiner Lösung macht Matlab ja 2012 Zeilen (=Wert des letzten i). Es sollen aber nur 21 sein (so wie vorher alloziert).
Weil Matlab soll ja alle Werte in M suchen wo die 3.Spalte = 1992...1993...usw....2012 ist und dann in die Ergebnismatrix schreiben:
Aber macht man folgendes:
dann ist wiederrum nur die letzte Zeile von G belegt, vorher steht 20mal die ones.
lg
Mr.Burns
|
|
|
Sirius3 |

Forum-Guru
|
 |
Beiträge: 441
|
 |
|
 |
Anmeldedatum: 12.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.10.2013, 11:41
Titel:
|
 |
Hallo Mr.Burns,
Harald hat Dir für F schon gezeigt, wie es prinzipiell funktioniert. Die Übertragung auf G sei hier als wiederholende Übung dem Leser überlassen.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.500
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.10.2013, 12:13
Titel:
|
 |
Hallo,
ja, da musst an sich nur meine beiden Vorschläge kombinieren.
Um solche Kopfstände zu vermeiden, mache ich ja lieber folgendes:
Grüße,
Harald
|
|
|
Mr.Burns |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 25
|
 |
|
 |
Anmeldedatum: 26.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.10.2013, 12:15
Titel:
|
 |
Hallo,
also ich stehe bei diesen Schleifen mal komplett auf dem Schlauch. Wenn ich doch vorher die Matrix mit 21 (im 2. Fall) und 252 (im 1. Fall) alloziere, dann ist es doch seltsam, wenn ich beim indizieren auf einmal i reinschreibe, und Matlab dann 2012 Zeilen macht.
Wie gesagt: ich bin total ratlos.
lg
Mr.Burns
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.500
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.10.2013, 12:23
Titel:
|
 |
Hallo,
Zitat: |
dann ist es doch seltsam, wenn ich beim indizieren auf einmal i reinschreibe, und Matlab dann 2012 Zeilen macht. |
Nicht seltsam, sondern vollkommen logisch, wenn i bis 2012 läuft.
Was du vorbelegst ist vollkommen gleichgültig, wenn der Index darüber hinausläuft. Es heißt ja nur, dass der entsprechende Bereich vorbelegt ist, nicht dass die Matrix nicht darüber hinaus wachsen kann. Es ist die Verantwortung des Programmierers, die richtigen Indizes anzugeben, MATLAB kann ja nicht hellsehen.
Also nochmal Fall 2:
Grüße,
Harald
|
|
|
Mr.Burns |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 25
|
 |
|
 |
Anmeldedatum: 26.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.10.2013, 13:02
Titel:
|
 |
Hallo,
ok das funktioniert dann für den 2.Fall super. Vielen Dank! Manchmal hat man solche Denkblockaden, dass man auf die einfachsten Dinge nicht kommt. Aber ich fürchte, ich werde demnächst noch öfter meine Fragen hier im Forum anbringen.
Auch für den 1.Fall habe ich nun die Lösung dank eurer Hilfe geschafft. Die Idee mit der 3d-Matrix war genial.
lg
Mr.Burns
|
|
|
|
|
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.
|
|