/edit:有关该主题的有趣讨论,请参见此处。谢谢@丹
根据 matrix 的大小,使用a(m,n) = 0
似乎a
比a = zeros(m,n)
. 在循环之前进行预分配时,两种变体是否相同?
它们肯定不一样。
尽管有很多方法可以超越 的性能a=zeros(m,n)
,但简单地做a(m,n) = 0
并不是一种安全的方法。如果已经存在任何条目,a
它们将保持存在。
有关一些不错的选择,请参阅this,如果您不介意风险,也可以考虑向后循环。
我认为这取决于你的 m 和 n。您可以自己查看时间
tic; b(2000,2000) = 0; toc;
Elapsed time is 0.004719 seconds.
tic; a = zeros(2000,2000); toc;
Elapsed time is 0.004399 seconds.
tic; a = zeros(2,2); toc;
Elapsed time is 0.000030 seconds.
tic; b(2,2) = 0; toc;
Elapsed time is 0.000023 seconds.