MATLAB structs zu einer zusammenführen

Hallo zusammen,

fange gerade etwas mit matlab an, und schon die erste Frage.

Ich habe mehrere structs (.mat dateien…) dei Daten enthalten. Aller Dateien haben die gleichen Spalten. Nun möchte ich diese Spalten ineiner Datei zusammenfassen.

Also so ungefähr
s1.name = „norbert“;
s1.alter = 34;

s2.name = „heinz“;
s2.alter = 54;

s_all = add(s1, s2); (Add suche ich halt…)
s_all(1).name = „norbert“;
s_all(1).alter = 34;
s_all(2).name = „heinz“;
s_all(2).alter = 54;

kann mir da jemand einen Tipp geben? Alle Versuche mit so etwas S_all = [s1 s1] sind gescheitert. Gibt dan halt eine 1x2 matrix mit den elemente s1 und s2.

Oder habe ich da ein grundsätzliches Verständnis Problem?

Schonmal vielen Dank für jede Hilfe!

fg

Dirk_p

Hallo Dirk,

du musst die Werte der Felder einzeln zusammenfügen und damit ein neues struct erstellen.
Das heißt alle Werte für „name“ in einem Vektor sammeln, und alle Werte für „alter“ in einem Vektor sammeln.

Das geht z.B. so:
name_all = cat(1,s1.name,s2.name)
alter_all = cat(1,s1.alter,s2.alter)

Damit kannst du jetzt ein neues struct erzeugen:
s_all = struct(‚name‘, name_all, ‚alter‘, alter_all)

Das Ganze geht natürlich auch als Einzeiler:
s_all = struct(‚name‘, cat(1,s1.name,s2.name), ‚alter‘, cat(1,s1.alter,s2.alter))

Gruß Daniel

Hallo Daniel,

vielen Dank für die schnelle Antwort.

Das muss ich mal schauen, wie das praktisch geht. Die Lösung habe ich vom Grundsatz verstanden, aber klingt aufwendig, wofür du natürlich nichts kannst. 20 Dateien mit je 50 Feldern… Das schreit nach einer Schleife… Werde mal sehen…

fg

Dirk_p