struct
Strukturarray
Beschreibung
Ein Strukturarray ist ein Datentyp, der miteinander in Beziehung stehende Daten mit Datencontainern, die Felder genannt werden, gruppiert. Jedes Feld kann jeden beliebigen Datentyp enthalten. Greifen Sie auf Daten in einem Feld zu, indem Sie die Punktnotation in der Form structName.fieldName
verwenden.
Erstellung
Wenn Sie Daten in eine neue Struktur eingeben müssen, erstellen Sie die Struktur mithilfe der Punktnotation, um ihre Felder nacheinander zu benennen:
s.a = 1; s.b = {'A','B','C'}
s = struct with fields:
a: 1
b: {'A' 'B' 'C'}
Feldnamen können ASCII-Buchstaben (A–Z, a–z), Ziffern (0–9) und Unterstriche enthalten und müssen mit einem Buchstaben beginnen. Die maximale Länge eines Feldnamens ist namelengthmax
.
Sie können ein Strukturarray auch mithilfe der Funktion struct
, die im Folgenden beschrieben ist, erstellen. Sie können viele Felder gleichzeitig angeben oder ein nichtskalares Strukturarray erstellen.
Syntax
Beschreibung
s = struct
erstellt eine Skalarstruktur (1x1) ohne Felder.
s = struct(
erstellt ein Strukurarray mit dem angegebenen Feld und Wert. Das Eingabeargument field
,value
)value
kann einen beliebigen Datentyp aufweisen, z. B. numerisch, logisch, Zeichen oder Zellenarray.
Wenn
value
kein Zellenarray ist oder wennvalue
ein skalares Zellenarray ist, dann ists
eine skalare Struktur. Beispielsweise erstellts = struct('a',[1 2 3])
eine 1x1-Struktur, wobeis.a = [1 2 3]
.Wenn
value
ein nichtskalares Zellenarray ist, dann ists
ein Strukturarray mit denselben Dimensionen wievalue
. Jedes Element vons
enthält das entsprechende Element vonvalue
. Beispielsweise gibts = struct('x',{'a','b'})
s(1).x = 'a'
unds(2).x = 'b'
zurück.Wenn
value
ein leeres Zellenarray{}
ist, dann ists
eine leere Struktur (0x0).
s = struct(field1,value1,...,fieldN,valueN)
erstellt ein Strukturarray mit mehreren Feldern.
Wenn keine der
value
-Eingaben Zellenarrays sind oder wenn allevalue
-Eingaben, die Zellenarrays sind, Skalare sind, dann ists
eine skalare Struktur.Wenn eine der
value
-Eingaben ein nichtskalares Zellenarray ist, dann hats
dieselben Dimensionen wie dieses Zellenarray. Wenn zwei oder mehrvalue
-Eingaben nichtskalare Zellenarrays sind, dann müssen alle dieselben Dimensionen aufweisen.Für jeden Wert (
value
), der ein skalares Zellenarray oder ein Array eines anderen Datentyps ist, fügtstruct
die Inhalte vonvalue
in das relevante Feld für alle Elemente vons
ein. Beispielsweise gibts = struct('x',{'a','b'},'y','c')
s(1).x = 'a'
,s(2).x = 'b'
,s(1).y = 'c'
unds(2).y = 'c'
zurück.Wenn eine der
value
-Eingaben ein leeres Zellenarray ist,{}
, dann ist die Ausgabes
eine leere Struktur (0x0). Wenn Sie ein leeres Feld angeben und die Werte anderer Felder beibehalten möchten, verwenden Sie stattdessen[]
alsvalue
-Eingabe.
s = struct([])
erstellt eine leere Struktur (0x0) ohne Felder.
s = struct(
erstellt eine skalare Struktur mit Feldnamen und -werten, die den Eigenschaften von obj
)obj
entsprechen. Die Funktion struct
konvertiert obj
nicht, sondern erstellt stattdessen s
als neue Struktur. Diese Struktur behält die Klasseninformation nicht bei, sodass private, geschützte und verborgene Eigenschaften in s
zu öffentlichen Feldern werden. Die Funktion struct
gibt eine Warnung aus, wenn Sie diese Syntax verwenden.