我想在MATLAB中声明一个数组而不指定大小,而不是像C ++中的std::vector
,然后我想把元素“推”到数组中。我怎样才能声明这个数组并推送它?
答案 0 :(得分:6)
尽管answer of Paul R是正确的,但是在没有预先分配的情况下让数组在Matlab中增长是一种非常糟糕的做法。请注意,即使std::vector
也可以选择reserve()
内存,以避免重复重新分配内存。
您可能需要考虑预先分配一定数量的记忆,然后调整大小以适应实际需要的大小。
您可以阅读有关预分配here的更多信息。
答案 1 :(得分:4)
你可以像这样定义一个空数组:
A = [];
To" push"列元素:
A = [ A 42 ];
To" push"一行元素:
A = [ A ; 42 ];
答案 2 :(得分:4)
作为Shai pointed out,将元素推送到向量上并不是MATLAB中的好方法。我假设你在一个循环中这样做。在这种情况下,这将是更好的方法:
A = NaN(max_row, 1);
it = 0;
while condition
it = it + 1;
A(it) = value;
end
A = A(1:it);
如果你不知道最大尺寸,你可以尝试这样的事情:
stack_size = 100;
A = NaN(stack_size,1);
it = 0;
while some_condition
it = it + 1;
if mod(it, stack_size) == 0
A = [A; NaN(stack_size,1)];
end
A(it) = value;
end
A = A(1:it);