Main Content

構造体配列のメモリ要件

構造体配列のメモリは完全に連続している必要はありません。しかし、各フィールドには連続メモリが必要であり、MATLAB® が配列を説明するために作成するヘッダーにも連続メモリが必要です。配列が非常に大きい場合に、フィールド数やフィールド内の要素数をインクリメントさせると Out of Memory エラーの原因になります。

以下のような関数 struct で初期値を指定して、メモリを内容に事前に割り当てます。

newStruct(1:25,1:50) = struct('a',ones(20),'b',zeros(30),'c',rand(40));

このコードにより、フィールド ab、および c をもつ 25 行 50 列の構造体配列 S が作成され、値が入力されます。

初期値を割り当てたくない場合は、構造体配列の最後の要素の各フィールドに以下のような空の配列を割り当てることにより、構造体配列を初期化できます。

newStruct(25,50).a = [];
newStruct(25,50).b = [];
newStruct(25,50).c = [];

または、次も等価です。

newStruct(25,50) = struct('a',[],'b',[],'c',[]);

しかし、この例では、MATLAB は単純に配列の内容にではなくヘッダーにメモリを割り当てます。

詳細については、以下を参照してください。