如何在MATLAB中声明一个没有大小的数组?

时间:2014-05-22 11:07:38

标签: arrays matlab

我想在MATLAB中声明一个数组而不指定大小,而不是像C ++中的std::vector,然后我想把元素“推”到数组中。我怎样才能声明这个数组并推送它?

3 个答案:

答案 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);