[Home] [Lexikon] [Aufgaben] [Tests] [Kurse] [Begleitmaterial] [Hinweise] [Mitwirkende] [Publikationen] | |
Mathematik-Online-Kurs: MATLAB - Weitere Datentypen | |
Strukturen |
[vorangehende Seite] [nachfolgende Seite] | [Gesamtverzeichnis][Seitenübersicht] |
>> S=struct('Name','Belinda Beispiel','Matrikelnr',1234567,... 'Noten',[1.3 1.0 1.7]) S = Name: 'Belinda Beispiel' Matrikelnr: 1234567 Noten: [1.3000 1 1.7000] >> whos S Name Size Bytes Class S 1x1 436 struct array Grand total is 23 elements using 436 bytesDie Felder der Struktur S sind Name, Matrikelnr und Noten. Ihr Inhalt kann mit Hilfe der Syntax Sammelvariable.Feld angesprochen werden.
Strukturvariablen gleichen Aufbaus können wiederum zu Arrays beliebiger Dimension zusammengefasst werden. Indizierungsangaben sind dabei zwischen dem Namen der Sammelvariablen und dem Punkt anzugeben. Zuweisungen auf nicht vorhandene Elemente des Arrays oder Felder bewirken ein automatisches Auffüllen der Feldinhalte mit leeren Matrizen.
Spezielle Funktionen für Strukturen sind unter anderem:
Erzeugung/Manipulation von Strukturen struct Erstellen von Strukturvariablen setfield, getfield Setzen und Auslesen von Feldern isfield, isstruct Indikatorfunktionen für Felder/Strukturen rmfield Löschen eines Feldes orderfields Sortierung der Felder
Downloads:
( .m, | 827 , | 27.03.2007) | |
( .m, | 373 , | 27.03.2007) |
>> S=struct('Name','Belinda Beispiel','Matrikelnr',1234567,... 'Noten',[1.3 1.0 1.7]) S = Name: 'Belinda Beispiel' Matrikelnr: 1234567 Noten: [1.3000 1 1.7000] >> S(3).Name='Emil Exempel'; S(3).Matrikelnr=7654321 S = 1x3 struct array with fields: Name Matrikelnr Noten
Indizierung von Elementen und Feldern:
>> S(3) ans = Name: 'Emil Exempel' Matrikelnr: 7654321 Noten: [] >> S(2) ans = Name: [] Matrikelnr: [] Noten: [] >> S(2).Matrikelnr=1223334; >> S([1 3]) ans = 1x2 struct array with fields: Name Matrikelnr Noten >> S([1 3]).Name ans = Belinda Beispiel ans = Emil ExempelMan beachte, dass bei der letzten Indizierung zwei Rückgabewerte entstehen. Diese werden sukzessive der Standardvariablen ans zugewiesen, weshalb diese nur noch den letzten Wert
'Emil Exempel'
enthält.
Zuweisung mehrerer Rückgabewerte:
>> [S.Matrikelnr] ans = 1234567 1223334 7654321 >> {S.Name} ans = 'Belinda Beispiel' [] 'Emil Exempel' >> [N1,N2,N3]=S.Name N1 = Belinda Beispiel N2 = [] N3 = Emil ExempelSofern die Inhalte eines Feldes Matrizen gleicher Größe sind, können diese wie in der ersten Befehlszeile gezeigt, durch Klammerung mit
[ ]
zu
einer Matrix zusammengefasst werden. Bei Feldinhalten unterschiedlichen
Datentyps können
mehrere Rückgabewerte stets durch Klammerung mit { }
zu einer
Cell zusammengefasst werden.
Ebenso möglich sind Zuweisungen auf mehrere Variablennamen. Diese sind auf der
linken Seite einer Anweisung durch [ ]
geklammert anzugeben. Die Zahl
der Variablen muss dabei mit der Anzahl der Rückgabewerte der rechten
Seite übereinstimmen.
Sortieren und Löschen von Feldern:
>> S(2).Fach='Mathematik'; >> S(1) ans = Name: 'Belinda Beispiel' Matrikelnr: 1234567 Noten: [1.3000 1 1.7000] Fach: [] >> orderfields(S) ans = 1x3 struct array with fields: Fach Matrikelnr Name Noten >> rmfield(S,'Name') ans = 1x3 struct array with fields: Matrikelnr Noten Fach >> S S = 1x3 struct array with fields: Name Matrikelnr Noten FachDer Befehl orderfield sortiert die Felder einer Struktur in alphabetischer Reihenfolge. Mit rmfiled können Felder von Strukturen gelöscht werden. In beiden Fällen ist darauf zu achten, dass die Funktionen nicht direkt auf der Struktur operieren, sondern nur auf einer Kopie. Daher ist ggf. das Resultat der Strukturvariablen selbst wieder zuzuweisen (z.B.
S=rmfield(S,'Name')
).
[vorangehende Seite] [nachfolgende Seite] | [Gesamtverzeichnis][Seitenübersicht] |
automatisch erstellt am 5.2.2008 |