Forum: PC-Programmierung Matlab Zugriff auf Nested Structures


von Kai S. (kai1986)


Lesenswert?

Hallo,

ich habe in Matlab eine Datenstruktur der Form
raum.kueche = array
raum.wohnzimmer = array
raum.schlafzimmer = array

wobei array ein zweidimensionales Array ist, in dem die eigentlichen 
Daten stehen. Die Struktur hab ich so gewählt, weil ich es gut lesbar 
finde, ohne ständig nachzuschauen, welcher Raum jetzt wieder welche 
Nummer hat und zudem die Arrays unterschiedliche größen haben können und 
damit Änderungen einfach sind.

Jetzt stehe ich aber vor dem Problem, das ich gerne mit einer Funktion 
bestimme Rechnungen auf alle Arrays ausführen möchte, aber mit dem 
Zugriff darauf nicht klar komme (oder es vielleicht garnicht geht, so 
wie ich mir es vorstelle.
Ich würde meiner Funktion gerne einfach die Variable raum übergeben und 
in dieser dann per Schleife die einzelnen Unterstrukturen abarbeiten. 
Leider habe ich bisher keine Möglichkeit gefunden auf die 
unterstrukturen zuzugereifen, ohne dies hart zu codieren.

Zum veranschauliche:
ich würde gerne so etwas haben wie raum.(1) statt raum.kueche um auf das 
Array dahinter zuzugreifen.

Ich hoffe, es kann mir jemand dabei weiter helfen.

Gruß Kai

von vorticon (Gast)


Lesenswert?

da gibt es diverse Moeglichkeiten. Nehmen wir an, die Funktion f soll 
auf alle Felder angewandt werden:


eleganteste Loesung mit structfun:
structfun(@f,raum);

auch moeglich mit dynamischen Feldnamen:
fn=fieldnames(raum);
for i=1:numel(fn)
   f( raum.(fn{i}) );
end

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.