構造体配列のメモリ要件
構造体配列のメモリは完全に連続している必要はありません。しかし、各フィールドには連続メモリが必要であり、MATLAB® が配列を説明するために作成するヘッダーにも連続メモリが必要です。配列が非常に大きい場合に、フィールド数やフィールド内の要素数をインクリメントさせると Out
of
Memory
エラーの原因になります。
以下のような関数 struct
で初期値を指定して、メモリを内容に事前に割り当てます。
newStruct(1:25,1:50) = struct('a',ones(20),'b',zeros(30),'c',rand(40));
このコードにより、フィールド a
、b
、および c
をもつ 25 行 50 列の構造体配列 S
が作成され、値が入力されます。
初期値を割り当てたくない場合は、構造体配列の最後の要素の各フィールドに以下のような空の配列を割り当てることにより、構造体配列を初期化できます。
newStruct(25,50).a = []; newStruct(25,50).b = []; newStruct(25,50).c = [];
または、次も等価です。
newStruct(25,50) = struct('a',[],'b',[],'c',[]);
しかし、この例では、MATLAB は単純に配列の内容にではなくヘッダーにメモリを割り当てます。
詳細については、以下を参照してください。