Matlab中for循环的预分配

Pre allocation of for loops in Matlab

我是循环的新手,我在网上浏览过有关预分配的信息,但很难知道如何在这个问题上应用分配。因此我想知道是否有人可以提供任何建议如何在 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)

我发现的 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) 来预分配以便于查看 "missing values"。 请注意,我们使用 1000 而不是 999,因为分配取决于 k 矩阵的最终值