MATLAB循环中的向量恢复

3

我在MATLAB中运行一个for循环。每次迭代会产生一个长度不同于上一次迭代创建的向量。是否有办法恢复每个单独的向量?最终,我想连接这些向量中的每一个。我的代码类似于

for i=1:n 
    v = zeros(1,i)
end

因此,在i=n之后,v将是一个n行一列的向量,但我也想恢复任何i的向量。在我的代码中,每个向量v不是零行向量,而是大小不同的向量。谢谢。

2个回答

6

在看到罗迪的帖子之前,我已经写好了这个回答,所以我想也许我应该也把它发出来。一个替代方案,其效率略低于罗迪的解决方案(我做了一些计时运行,差异微不足道),但避免了复杂的索引:

A = cell(1, n);
for i = 1:n
    A{1, i} = zeros(1, i);
end
Soln = cat(2, A{:});

我通过循环将不同长度的行向量存储在一个单元数组中,然后在最后一步进行连接。


3
最简单的方法是这样的:
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接