Hauptinhalt

Verketten von Strukturen

Dieses Beispiel veranschaulicht, wie Struktur-Arrays mithilfe des Operators [] verkettet werden können. Um Strukturen zu verketten, müssen sie denselben Satz von Feldern aufweisen, jedoch müssen die Felder nicht dieselben Größen oder Datentypen enthalten.

Erstellen Sie die skalaren (1-mal-1) Struktur-Arrays struct1 und struct2, jeweils mit den Feldern a und b:

struct1.a = 'first';
struct1.b = [1,2,3];
struct2.a = 'second';
struct2.b = rand(5);
struct1,struct2
struct1 = struct with fields:
    a: 'first'
    b: [1 2 3]

struct2 = struct with fields:
    a: 'second'
    b: [5×5 double]

Genauso wie die Verkettung zweier Skalarwerte wie [1,2] ein numerisches 1-mal-2-Array erzeugt, erzeugt die Verkettung von struct1 und struct2 ein 1-mal-2-Struktur-Array.

combined = [struct1,struct2]
combined=1×2 struct array with fields:
    a
    b

Wenn Sie auf den Inhalt eines bestimmten Feldes zugreifen möchten, geben Sie den Index der Struktur im Array an. Greifen Sie beispielsweise auf Feld a der ersten Struktur zu.

combined(1).a
ans = 
'first'

Die Verkettung gilt auch für nicht-skalare Struktur-Arrays. Erstellen Sie beispielsweise ein 2-mal-2-Struktur-Array mit dem Namen new. Da sowohl die 1-mal-2-Struktur combined als auch die 2-mal-2-Struktur new zwei Spalten aufweisen, können Sie diese vertikal mit einem Semikolon als Trennzeichen verknüpfen.

new(1,1).a = 1;
new(1,1).b = 10;
new(1,2).a = 2;
new(1,2).b = 20;
new(2,1).a = 3;
new(2,1).b = 30;
new(2,2).a = 4;
new(2,2).b = 40;

larger = [combined; new]
larger=3×2 struct array with fields:
    a
    b

Greifen Sie auf Feld a der Struktur larger(2,1) zu. Es enthält denselben Wert wie new(1,1).a.

larger(2,1).a
ans = 
1

Siehe auch

Themen