Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在MATLAB中声明没有大小的数组? 我想在Matlab中声明一个数组,而不指定大小,而不是C++中的“代码> STD::vector < /代码>,然后我想把元素推到数组中。如何声明此数组并将其推入?_Arrays_Matlab - Fatal编程技术网

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);
这在内存分配方面是非常糟糕的做法。请考虑预先分配。