|
|
Matrix aus Vektoren erstellen |
|
hanson |

Forum-Newbie
|
 |
Beiträge: 6
|
 |
|
 |
Anmeldedatum: 25.07.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.07.2012, 15:40
Titel: Matrix aus Vektoren erstellen
|
 |
|
 |
|
Hallo zusammen,
Da ich neu hier bin, möchte ich mich zuerst kurz vorstellen:
Mein Name ist Hannes, ich bin 26 und schreibe im Moment meine Diplomarbeit auf dem Gebiet Thermodynamik/Brennverfahrensentwicklung Ottomotoren. Im Zuge dessen habe ich jetzt auch erstmals aktiv mit Matlab zu tun. Die Grundlagen habe ich mir schon zu Gemüte geführt.
Ich stoße beim Thema "structs" jetzt aber auf ein Problem, das ich anhand eines Beispiels erläutern möchte:
Ich habe den folgenden struct vorliegen:
Nun möchte ich die Vektoren, die in signals.data stehen, zu einer Matrix (data) zusammenfassen, die die folgende Form hat:
Da das Ganze dynamisch geschehen soll, habe ich mir diese for-Schleife überlegt:
Leider bekomme ich beim Ausführen die Fehlermeldung
Subscripted assignment dimension mismatch.
Später möchte ich zudem das gleiche für die Namen aus signal.name machen, also analog:
bzw. als for-Schleife
Ich hoffe, dass ich mein Problem verständlich vorgebracht habe und würde mich freuen, wenn mir jemand weiterhelfen könnte.
Viele Grüße,
hannes
Zuletzt bearbeitet von hanson am 25.07.2012, 16:28, insgesamt 2-mal bearbeitet
|
|
|
|
|
Kascho |

Forum-Century
|
 |
Beiträge: 195
|
 |
|
 |
Anmeldedatum: 24.03.10
|
 |
|
 |
Wohnort: Jena
|
 |
|
 |
Version: R2008b ... :(
|
 |
|
|
 |
|
Verfasst am: 25.07.2012, 16:13
Titel:
|
 |
Hallo Hanson und Willkommen im Forum,
ich kann deinen Fehler mit diesen Beispieldaten nicht Reproduzieren. Bei mit tut deine Schleife was sie (wahrscheinlich) soll.
Kann es sein das die Variable "data" schon irgendwo existiert und ein andere Typ als 4x3 double ist?
Setz doch mal ein "clear data" vor die Schleife.
Wenn nicht, liegen deine Daten wirklich nach dem Schema vor? Also in A,B und C jeweils gleich viele Elemente?
Gruß, Kascho
|
|
|
hanson |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 6
|
 |
|
 |
Anmeldedatum: 25.07.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.07.2012, 16:28
Titel:
|
 |
Hi Kascho,
Vielen Dank für deine Antwort. Du hattest Recht, die Variable "data" bestand zu diesem Zeitpunkt schon. Ich hatte mich noch gewundert, weil als ich die Schleife bei mir auch noch funktioniert hatte, als ich sie das erste Mal ausprobiert hatte.
Allerdings besteht das Problem bei meinem zweiten Vorhaben
weiterhin.
Ich gehe davon aus, dass es daran liegt, dass es sich hier bei den zu verarbeitenden Daten um Strings handelt. Wie bringe ich Matlab denn dazu, dass die Variable "names", die erstellt werden soll keinen String darstellt, sondern eine Matrix (cell?), in deren Spalten die Strings "signals.name.A/B/C" stehen?
|
|
|
Kascho |

Forum-Century
|
 |
Beiträge: 195
|
 |
|
 |
Anmeldedatum: 24.03.10
|
 |
|
 |
Wohnort: Jena
|
 |
|
 |
Version: R2008b ... :(
|
 |
|
|
 |
|
Verfasst am: 25.07.2012, 16:49
Titel:
|
 |
Hallo nochmal Hanson,
das Problem liegt eher darin das es chars sind. Also jedes Zeichen einzeln.
So würde es funktionieren:
*edit: Upsa, hab deine letzte Zeile irgendwie überlesen, mit Cells wäre das wesentlich einfacher, da musst du geschweifte Klammern nutzen, also so:
Gruß, Kascho
|
|
|
hanson |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 6
|
 |
|
 |
Anmeldedatum: 25.07.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.07.2012, 17:08
Titel:
|
 |
Ach, perfekt!
Und das Ganze nur durch {} statt ()...
Vielen Dank, Kascho!
|
|
|
Sirius3 |

Forum-Guru
|
 |
Beiträge: 441
|
 |
|
 |
Anmeldedatum: 12.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.07.2012, 22:20
Titel:
|
 |
Hallo Hannes,
viele Aufgaben lassen sich leichter lösen, wenn man statt Namen für einzelne Elemente
Felder mit Indizes benutzt.
In Deinem Fall also statt A, B, C, ... 1,2, und 3.
Ein struct kann genauso über Indizes angesprochen werden wie eine Matrix oder ein Cell-Array. Nur dass statt einer Zahl komplexere Elemente mit z.B. name und data in jedem Eintrag stecken:
Dann kannst Du ganz einfach auf das selbe Feld aller Einträge zugreifen:
Grüße
Sirius
|
|
|
hanson |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 6
|
 |
|
 |
Anmeldedatum: 25.07.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.08.2012, 16:38
Titel:
|
 |
Hallo sirius,
Danke für den Tipp. Ich habe mich aber bewusst für die andere Variante entschieden, da ich in meinen wirklichen Messdaten deutlich mehr als die drei im Beispiel angegebenen Größen habe (ca. 50-100).
Da ist meiner Meinung nach die Variante, wie ich sie benutze, sinnvoller, da ich auf den ersten Blick sehe, wo sich meine Größe befindet. In deiner Version müsste man ja erst alle 50-100 structs durchsuchen.
Real sehen meine struct dann ungefähr so aus:
|
|
|
|
|
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.
|
|