我在 MATLAB 中运行一个 for 循环。每次迭代都会产生一个长度不同于前一次迭代中创建的向量的向量。为什么要恢复每个单独的向量?最后,我想连接这些向量中的每一个。我的代码类似于
for i=1:n
v = zeros(1,i)
end
所以之后i=n
,v
将是一个 n 向量,但我也想恢复任何向量i
。在我的代码中,每个向量 ,v
不是零行向量,而是一个不同大小的向量。谢谢。
当罗迪的帖子(+1)通过时,我已经输入了这个,所以我想我也可以发布它。与 Rody 相比,效率略低的替代解决方案(我做了一些定时运行,差异很小)但避免了复杂的索引是:
A = cell(1, n);
for i = 1:n
A{1, i} = zeros(1, i);
end
Soln = cat(2, A{:});
我通过循环将不同长度的行向量存储在一个单元格数组中,然后在最后一步将它们连接起来。
最简单的方法是这样的:
w = [];
for i=1:n
v = zeros(1,i);
%# your stuff here
w = [w v];
end
它产生向量w
,它是所有生成向量的串联v
。
但是请注意,这很慢,因为w
每次迭代都会增长。一个稍微复杂但更有效的解决方案是:
w = zeros(1, sum(1:n) );
j = 1;
for i=1:n
v = zeros(1,i);
%# your stuff here
w(1, j:j+i-1) = v;
j = j+i;
end