/ edit :有关该主题的有趣讨论,请参阅here。谢谢@Dan
使用a(m,n) = 0
似乎比a
的矩阵更快,具体取决于矩阵a = zeros(m,n)
的大小。在循环之前进行预分配时,两种变体是否相同?
答案 0 :(得分:5)
他们肯定不一样。
虽然有很多方法可以超越a=zeros(m,n)
的性能,但仅仅执行a(m,n) = 0
并不是一种安全的方法。如果a
中的任何条目已存在,则会保留现有条件。
请参阅this了解一些不错的选项,如果您不介意风险,也可以考虑向后循环。
答案 1 :(得分:1)
我认为这取决于你的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.