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)
基本思路是我有一些公式可以计算每个循环(例如 ab
和 ac
)。对于下一个循环,这个公式被添加到 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 矩阵的最终值
我是循环的新手,我在网上浏览过有关预分配的信息,但很难知道如何在这个问题上应用分配。因此我想知道是否有人可以提供任何建议如何在 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)
基本思路是我有一些公式可以计算每个循环(例如 ab
和 ac
)。对于下一个循环,这个公式被添加到 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 矩阵的最终值