|
|
vertcat für n-Matrizen anwenden |
|
Grünschnabel |

Forum-Fortgeschrittener
|
 |
Beiträge: 80
|
 |
|
 |
Anmeldedatum: 01.10.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: MATLAB R2013a
|
 |
|
|
 |
|
Verfasst am: 25.03.2015, 18:51
Titel: vertcat für n-Matrizen anwenden
|
 |
Hallo Zusammen,
ich habe folgendes Problem und es wäre schön, wenn mir jemand weiterhelfen könnte.
Ich habe n verschiedene Matrizen (Anzahl der Spalten ist immer gleich) und diese möchte ich zu einer Matrix zusammenfassen. Folgender Code löst mein Problem für z.B. 3 Matrizen.
Das Ergebnis von Matrix ist richtig.
Wie kann ich das ganze so umbauen, dass ich eine große Anzahl an Matrizen (n=1000) zusammensetzen? Matrix = vertcat ([Mat(1).In; Mat(2).In; ...;Mat(1000).In]) würde das Problem zwar lösen, aber diese Zeile mit Hand zu schreiben ist definitiv nicht der richtige Lösungsweg.
Vielen Dank im Voraus.
Beste Grüße
Der Grünschnabel
|
|
|
|
|
Grünschnabel |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 80
|
 |
|
 |
Anmeldedatum: 01.10.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: MATLAB R2013a
|
 |
|
|
 |
|
Verfasst am: 26.03.2015, 09:51
Titel:
|
 |
Hallo nochmal,
gibt es vielleicht einen geeigneten Schleifenansatz für mein Problem? Kennt sich da jemand aus? Googlen hat mein Problem leider nicht gelöst.
Über Denkanstöße wäre ich euch wirklich dankbar oder ist meine Frage zu schwammig formuliert?
Beste Grüße
Grünschnabel
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 26.03.2015, 09:57
Titel: Re: vertcat für n-Matrizen anwenden
|
 |
|
 |
|
Hallo Grünschnabel,
Für [a; b; c] wird intern bereits VERTCAT(a, b, c) aufgerufen. Deshalb kann man eine der beiden Methoden in Deinem Code-Beispiel einfach weglassen.
Bei einem größeren Struct kann die die Schreibweise sogar noch mehr vereinfachen:
Die Ausführung von M5 ist ein klein wenig schneller als bei M4, aber ich finde das (:) bei M4 klarer, wenn man den Code liest. Bei M5 könnte man denken, dass der Programmierer nicht bedacht hat, dass Mat ein Struct-Array ist. Ein eindeutiger Kommentar dahinter wäre aber auch hilfreich genug:
Wenn Mat ein Struct-Array ist, ist "Mat.In" eine komma-separierte Liste, auch wenn man es dem Ausdruck nicht auf Anhieb ansieht. Diese Liste kann als Input für VERTCAT dienen und der Befehl wird in Matlab-typischer Art sehr kompakt, hübsch und effizient. Man hat kaum noch eine Chance einen Tipp-Fehler oder sonstigen Bug einzubauen!
Das mag ich an Matlab so: Für einige Probleme läuft es langsamer als andere Sprachen. Aber wenn ich gerade VERTCAT(Mat.In) mal in C nach programmiere, gibt es mehr als 20 Möglichkeiten für fiese Bugs, die man mit aufwändigem Debuggen absichern muss. Wenn man dann irgendetwas nicht bedacht hat, stürzt das Programm ab und der Nerv-Faktor ist gigantisch. Genervt zu sein verringert aber meine Zufriedenheit, und deshalb programmiere ich gerne in Matlab :-)
Gruß, Jan
|
|
|
Grünschnabel |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 80
|
 |
|
 |
Anmeldedatum: 01.10.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: MATLAB R2013a
|
 |
|
|
 |
|
Verfasst am: 26.03.2015, 10:50
Titel:
|
 |
Guten Morgen Ja,
vielen Dank für Deine Hilfe, das Problem ist gelöst!!!
Ich wusste nicht ganz genau warum, konnte mich aber daran erinnern, dass es vorteilhaft sein könnte, meine Matrizen als Struct-Array zu definieren. Der von Dir genannte Befehl
löst das Problem und ich gebe Dir absolut recht, Matlab hat sehr viele nette Funktionen die (wenn man weiß wie man sie benutzten muss) sehr hilfreich sind.
Prima und schönen Tag.
Der Grünschnabel
|
|
|
|
|
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.
|
|