A struct
der jedes Feld ein Feld ist, ist leistungsfähiger, da sie weniger Datenelemente (ein Array pro Feld), während ein struct
Array mehr Flexibilität auf Kosten der Leistung und Speichernutzung hat (auf Element pro struct
pro Feld) aufweisen .
Aus eigenen den MATLAB documentation
Strukturen erfordern eine ähnliche Menge an Aufwand pro Feld. Strukturen mit vielen Feldern und kleinen Inhalten haben einen großen Aufwand und sollten vermieden werden. Ein großes Array von Strukturen mit numerischen Skalarfeldern erfordert viel mehr Speicher als eine Struktur mit Feldern, die große numerische Arrays enthalten.
Wir können die Nutzungs Speicher überprüfen Sie mit einem einfachen Beispiel
S = struct('field1', {1, 2}, 'field2', {3, 4});
SArray = struct('field1', {[1,2]}, 'field2', {[3,4]});
whos S*
% Name Size Bytes Class Attributes
%
% S 1x2 608 struct
% SArray 1x1 384 struct
Einige der Flexibilität durch eine struct
Array lieferte umfasst der Lage ist, leicht eine Teilmenge der Daten zu greifen:
subset = SArray(1:3);
% Compared to
subset.field1 = S.field1(1:3);
subset.field2 = S.field2(1:3);
Außerdem können Daten unterschiedlicher Größe gespeichert werden, die nicht einfach in ein Array passen.
S(1).field1 = [1,2];
S(2).field1 = 3;
Welche Lösung ist besser, hängt wirklich von den Daten und wie Sie es verwenden. Wenn Sie eine große Datenmenge haben, ist die erste Option aufgrund des geringeren Speicherbedarfs wahrscheinlich vorzuziehen.
Wenn Sie Code für Sie arbeiten, würde ich nicht sorgen, um es nur für eine andere Konvention zu konvertieren, es sei denn, Sie Probleme mit der Leistung (in diesem Fall verwenden Sie eine struct
Arrays) oder Schwierigkeiten beim Zugriff/Ändern der Daten (verwenden Sie das Array struct
).