Массивы структур не требуют абсолютно непрерывной памяти. Однако каждое поле требует непрерывной памяти, как делает заголовок что MATLAB® создает, чтобы описать массив. Для очень больших массивов, инкрементно увеличивая число полей или числа элементов в поле приводит к Out
of
Memory
ошибки.
Предварительно выделите память для содержимого путем присвоения начальных значений с struct
функция, такой как
newStruct(1:25,1:50) = struct('a',ones(20),'b',zeros(30),'c',rand(40));
Этот код создает и заполняет 25 50 массив структур S
с полями a
B
, и c
.
Если вы предпочитаете не присваивать начальные значения, можно инициализировать массив структур путем присвоения пустых массивов каждому полю последнего элемента в массиве структур, такой как
newStruct(25,50).a = []; newStruct(25,50).b = []; newStruct(25,50).c = [];
или, эквивалентно,
newStruct(25,50) = struct('a',[],'b',[],'c',[]);
Однако в этом случае MATLAB только выделяет память для заголовка, а не для содержимого массива.
Для получения дополнительной информации см.: