矩阵大小为:12636*1543
- 不预设矩阵大小的方法是:
A = zeros(1,1543);
m = 1;
for i = 1:12636
A (m+1,:) = ……; % 一些较复杂的操作
% 或 A(end+1,:) = zeros(1,1543);
end
- 预设矩阵大小的方法是:
A = zeros(12636,1543);
m = 1;
for i = 1:12636
A (m+1,:) = ……; % 一些较复杂的操作
end
方法1耗时70秒,方法2耗时0.02秒,差了3500倍。(简单的运算中可能不会差距如此大,更复杂的运算可能差距会进一步扩大)
总结:很多使用(end+1)的情况是因为不能提前知道矩阵的大小,这个时候可以先进行预计算,只在循环处运行: m = m +1,计算出矩阵的大小,然后以m值设置矩阵,最后再进行正式运算。