Рост массива путем конкатенации
x = [x, 0];
очень медленный, см. здесь и здесь .Вместо этого следует (если предварительное выделение невозможно по какой-либо причине) увеличить массив, добавив новый элемент, например, так:
x(end+1) = 0;
Причина в том, что [x,0]
создает новый массив, копируястарые данные в него, на каждой итерации одного цикла, тогда как другая форма расширяет массив, требуя перераспределения только изредка (удваивает основной объем памяти, когда массив становится слишком маленьким).
Инициализация пустой структурымассив (как предложенный @LuisMendo в комментарии ) можно сделать так:
s = struct('field1', {}, 'field2', {});
Чтобы добавить к нему, выполните:
s(end+1) = struct('field1', 1, 'field2', 'x');
В качестве альтернативы, одинможно добавить с помощью
s(end+1).field1 = 5;
s(end).field2 = 'y';
Обратите внимание, что в этом случае end+1
происходит только при первом добавлении нового элемента в массив, последующие поля записываются в последний элемент массива.