Требования к памяти для массива структур

Массивы структур не требуют абсолютно непрерывной памяти. Однако каждое поле требует непрерывной памяти, как делает заголовок что MATLAB® создает, чтобы описать массив. Для очень больших массивов, инкрементно увеличивая число полей или числа элементов в поле приводит к Out of Memory ошибки.

Предварительно выделите память для содержимого путем присвоения начальных значений с struct функция, такой как

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

Этот код создает и заполняет 25 50 массив структур S с полями aB, и c.

Если вы предпочитаете не присваивать начальные значения, можно инициализировать массив структур путем присвоения пустых массивов каждому полю последнего элемента в массиве структур, такой как

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

или, эквивалентно,

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

Однако в этом случае MATLAB только выделяет память для заголовка, а не для содержимого массива.

Для получения дополнительной информации см.: