|
[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 bytes
Die 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 Exempel
Man 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 Exempel
Sofern 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
Fach
Der 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 |