在Matlab中预先分配for循环

时间:2015-02-21 17:49:21

标签: matlab for-loop memory-management

我是循环新手,我在互联网上查看了预分配,但很难知道如何在这个问题上应用分配。因此,我想知道是否有人可以提供任何建议如何在Matlab中预先分配这种循环。

atest = [];
for k = 2:1000
    ab = 1+ (k)
    ac = ab +1
    atest = [atest, ac]
end

% expected dimensions of atest is a matrix of (1,999)

基本思想是我有一些计算每个循环的公式(例如abac)。对于下一个循环,此公式将添加到atest矩阵。 最终矩阵artest是我的输出,我知道其尺寸为(1,999)

1 个答案:

答案 0 :(得分:0)

Divakar回答的另一个变体(非常感谢!)我发现:

atest = zeros(1,1000)
for k = 2:1000
    ab = 1 + (k)
    ac = ab + 1
    atest(:,k) = ac
end

由于k的矩阵从第2列开始,atest的第一列将为空(填充0)。 因此,我可能会建议使用atest = NaN(1,1000)来预先分配以便轻松查看"缺失值"。 请注意,我们使用1000而不是999,因为分配取决于k矩阵的结束值