struct
gdzie każde pole jest tablicą bardziej wydajnych ponieważ ma mniejszą liczbę elementów (po jednej tablicy na polu), natomiast struct
tablicy ma większą elastyczność w kosztów wykonania i pamięci (na elemencie za struct
na obszar) .
Od MATLAB własnych documentation
budowle wymagają podobną kwotę nadwyżki przypadającej na polu. Struktury o wielu polach i małych treściach mają duży narzut i należy ich unikać. Duża liczba struktur z numerycznymi polami skalarnymi wymaga znacznie więcej pamięci niż struktura z polami zawierającymi duże tablice numeryczne.
Możemy sprawdzić użycie pamięci o prostym przykładzie
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
Niektóre elastyczności zapewnianej przez struct
tablicy obejmuje jest w stanie łatwo chwycić podzbiór danych:
subset = SArray(1:3);
% Compared to
subset.field1 = S.field1(1:3);
subset.field2 = S.field2(1:3);
Możliwość przechowywania danych o różnych rozmiarach, które mogą nie pasować do tablicy.
S(1).field1 = [1,2];
S(2).field1 = 3;
Jakie rozwiązanie jest lepsze, tak naprawdę zależy od danych i sposobu ich użytkowania. Jeśli masz dużą ilość danych, pierwsza opcja będzie prawdopodobnie lepsza ze względu na mniejszy ślad pamięci.
Jeśli używasz kodu, nie martwię się o jego konwersję tylko ze względu na używanie innej konwencji, chyba że masz problemy z wydajnością (w takim przypadku użyj struct
z tablic) lub trudności z dostępem/modyfikacją danych (użyj tablicy struct
).