Если N
не слишком большой, чтобы вызвать проблемы с памятью, вы можете предварительно присвоить output
вектору того же размера, что и input
, и удалить все ненужные элементы в конце цикл.
output = NaN(N,1);
for i=1:N
...
output(i) = input(i);
...
end
output(isnan(output)) = [];
Есть две альтернативы
Если output
будет слишком большим, если ему назначен размер N
, или если вы не знаете верхний предел размера output
, вы можете сделать следующее
lengthOutput = 100;
output = NaN(lengthOutput,1);
counter = 1;
for i=1:N
...
output(counter) = input(i);
counter = counter + 1;
if counter > lengthOutput
%# append output if necessary by doubling its size
output = [output;NaN(lengthOutput,1)];
lengthOutput = length(output);
end
end
%# remove unused entries
output(counter:end) = [];
Наконец, если N мало, то прекрасно позвонить
output = [];
for i=1:N
...
output = [output;input(i)];
...
end
Обратите внимание, что производительность резко падает, если N становится большим (скажем,> 1000).