Arrays 如何在MATLAB中声明没有大小的数组? 我想在Matlab中声明一个数组,而不指定大小,而不是C++中的“代码> STD::vector < /代码>,然后我想把元素推到数组中。如何声明此数组并将其推入?
您可以这样定义一个空数组:Arrays 如何在MATLAB中声明没有大小的数组? 我想在Matlab中声明一个数组,而不指定大小,而不是C++中的“代码> STD::vector < /代码>,然后我想把元素推到数组中。如何声明此数组并将其推入?,arrays,matlab,Arrays,Matlab,您可以这样定义一个空数组: A = []; 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); 要“推”列元素,请执行以下操作: A = [ A
A = [];
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);
要“推”列元素,请执行以下操作:
A = [ A 42 ];
要“推送”行元素,请执行以下操作:
A = [ A ; 42 ];
尽管是正确的,但是在Matlab中不预先分配的情况下让数组生长是一种非常糟糕的做法。请注意,即使std::vector
也可以选择内存,以避免重复重新分配内存
您可能需要考虑预先分配一定数量的备忘录,然后调整大小以适应实际需要的大小。
您可以阅读有关预分配的更多信息。因为,在MATLAB中,将元素推到向量上不是一个好方法。我假设你在循环中做这件事。在这种情况下,这将是更好的方法:A = NaN(max_row, 1);
it = 0;
while condition
it = it + 1;
A(it) = value;
end
A = A(1:it);
如果您不知道最大尺寸,可以尝试以下方法:
A = [];
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);
这在内存分配方面是非常糟糕的做法。请考虑预先分配。