Struktur-Arrays
Wenn Sie Daten haben, die Sie nach Namen ordnen möchten, können Sie Strukturen verwenden, um sie zu speichern. Strukturen speichern Daten in Behältern, die Felder genannt werden, auf die Sie dann über die von Ihnen angegebenen Namen zugreifen können. Verwenden Sie die Punktnotation, um Daten in Strukturfeldern zu erstellen, zuzuweisen und darauf zuzugreifen. Wenn der in einem Feld gespeicherte Wert ein Array ist, können Sie die Array-Indizierung verwenden, um auf Elemente des Arrays zuzugreifen. Wenn Sie mehrere Strukturen als Struktur-Array speichern, können Sie die Array-Indizierung und die Punktnotation verwenden, um auf einzelne Strukturen und deren Felder zuzugreifen.
Erstellen einer skalaren Struktur
Erstellen Sie zunächst eine Struktur namens patient, in deren Feldern Daten über einen Patienten gespeichert werden. Das Diagramm veranschaulicht, wie die Struktur Daten speichert. Eine Struktur wie patient wird auch als skalare Struktur bezeichnet, weil die Variable eine einzige Struktur speichert.

Verwenden Sie die Punktnotation, um die Felder name, billing und test hinzuzufügen, wobei Sie jedem Feld Daten zuweisen. In diesem Beispiel erstellt die Syntax patient.name sowohl die Struktur als auch ihr erstes Feld. Die folgenden Befehle fügen weitere Felder hinzu.
patient.name = 'John Doe';
patient.billing = 127;
patient.test = [79 75 73; 180 178 177.5; 220 210 205]patient = struct with fields:
name: 'John Doe'
billing: 127
test: [3×3 double]
Zugreifen auf Werte in Feldern
Nachdem Sie ein Feld erstellt haben, können Sie weiterhin die Punktnotation verwenden, um auf den darin gespeicherten Wert zuzugreifen und ihn zu ändern.
Ändern Sie zum Beispiel den Wert des Feldes billing.
patient.billing = 512.00
patient = struct with fields:
name: 'John Doe'
billing: 512
test: [3×3 double]
Mit der Punktnotation können Sie auch auf den Wert eines beliebigen Feldes zugreifen. Erstellen Sie zum Beispiel ein Balkendiagramm mit den Werten in patient.test. Fügen Sie in patient.name einen Titel mit dem Text hinzu. Wenn ein Feld ein Array speichert, dann gibt diese Syntax das gesamte Array zurück.
bar(patient.test)
title("Test Results for " + patient.name)
Um auf einen Teil eines in einem Feld gespeicherten Arrays zuzugreifen, fügen Sie Indizes hinzu, die für die Größe und den Typ des Arrays geeignet sind. Erstellen Sie zum Beispiel ein Balkendiagramm für die Daten in einer Spalte von patient.test.
bar(patient.test(:,1))

In nicht-skalare Struktur-Arrays indizieren
Struktur-Arrays können auch nicht-skalar sein. Sie können ein Struktur-Array beliebiger Größe erstellen, solange jede Struktur im Array dieselben Felder besitzt.
Fügen Sie zum Beispiel in patients eine zweite Struktur mit Daten über einen zweiten Patienten hinzu. Weisen Sie außerdem den ursprünglichen Wert von 127 dem billing-Feld der ersten Struktur zu. Da das Array nun zwei Strukturen besitzt, müssen Sie auf die erste Struktur durch Indizierung zugreifen: patient(1).billing = 127.
patient(2).name = 'Ann Lane';
patient(2).billing = 28.50;
patient(2).test = [68 70 68; 118 118 119; 172 170 169];
patient(1).billing = 127patient=1×2 struct array with fields:
name
billing
test
Daraus folgt, dass patient ein 1×2-Struktur-Array mit dem im Diagramm gezeigten Inhalt ist.

Jeder Patientendatensatz im Array ist eine Struktur der Klasse struct. Ein Array von Strukturen wird manchmal auch als „struct array“ bezeichnet. Die Begriffe „struct array“ und „structure array“ bedeuten jedoch dasselbe. Wie andere MATLAB®-Arrays kann auch ein Struktur-Array beliebige Dimensionen haben.
Ein Struktur-Array besitzt die folgenden Eigenschaften:
Alle Strukturen im Array haben die gleiche Anzahl von Feldern.
Alle Strukturen haben die gleichen Feldnamen.
Felder mit demselben Namen in verschiedenen Strukturen können unterschiedliche Datentypen oder -größen enthalten.
Wenn Sie dem Array eine neue Struktur hinzufügen, ohne alle Felder anzugeben, dann enthalten die nicht angegebenen Felder leere Arrays.
patient(3).name = 'New Name';
patient(3)ans = struct with fields:
name: 'New Name'
billing: []
test: []
Verwenden Sie die Array-Indizierung, um in ein Struktur-Array zu indizieren. Zum Beispiel gibt patient(2) die zweite Struktur zurück.
patient(2)
ans = struct with fields:
name: 'Ann Lane'
billing: 28.5000
test: [3×3 double]
Verwenden Sie die Array-Indizierung und die Punktnotation, um auf ein Feld zuzugreifen. Geben Sie zum Beispiel den Wert des Feldes billing für den zweiten Patienten zurück.
patient(2).billing
ans = 28.5000
Sie können auch in ein durch ein Feld gespeichertes Array indizieren. Erstellen Sie ein Balkendiagramm, das nur die ersten beiden Spalten von patient(2).test anzeigt.
bar(patient(2).test(:,[1 2]))

Hinweis
Sie können in einen Teil eines Feldes nur dann indizieren, wenn Sie sich auf ein einzelnes Element eines Struktur-Arrays beziehen. MATLAB® unterstützt keine Anweisungen wie z. B. patient(1:2).test(1:2,2:3), die versuchen, in ein Feld für mehrere Elemente des Struktur-Arrays zu indizieren. Verwenden Sie stattdessen die arrayfun-Funktion.
Siehe auch
struct | fieldnames | isfield