我正在尝试从for循环中存储列向量。
请参见以下代码:
for i = 1:10
a=rand(10,1)
astore = [a a a a a a a a a a a]
end
我知道必须有一种更有效的方法来做到这一点。特别是如果我在哪里,说我= 1:5000?
答案 0 :(得分:1)
正如注释中所阐明的那样,您想附加到astore
上,而不是在每个循环中都覆盖它。
您应该为内存效率预先分配输出
k = 10; % number of iterations
aHeight = 10; % Height of each a matrix in the loop.
astore = NaN( aHeight, k );
for ii = 1:k
a = rand( aHeight, 1 );
astore( :, ii ) = a;
end
我假设您的示例中的aHeight
是一致的,但是如果不是,则可以使用单元格数组
k = 10;
astore = cell( 1, k );
for ii = 1:k
a = rand( 10, 1 ); % could be anything
astore{ ii } = a;
end
预分配比使用astore(end+1) = a
或astore = [astore, a]
之类的方法在循环中追加更好。尽管这两个都是有效的选项。