回答
这与询问相同:为什么要创建一个值为0的变量?
通常你会这样做,如果你打算一起累积一堆结果在一起。在这种情况下,你必须开始“某处”。
继j_random_hacker的答案之后,在MATLAB中预分配数组而不是让MATLAB扩展它更有效。 MATLAB可以扩展阵列,如果你只是将元素关闭阵列的当前“结束”,像这样:
x = []
for ii=1:1e4
x(ii) = 1/ii;
end
这真的是低效的,因为在回路中的每一步,MATLAB将重新分配“X”是一个比以前更大的元素。以下是多更快:
x = zeros(1, 1e4);
for ii=1:1e4
x(ii) = 1/ii;
end
(可能是最快的还是在这种情况下:x = 1./(1:1e4);
,但预分配路线是你需要什么,当你解决不了的事情的向量化操作)
应该注意的是,这种优化虽然总是有用,但在涉及大矩阵之前通常并不重要。制作一个小测试脚本以查看这种效果如何缩放。我个人并不担心这个问题,直到大约200多个元素在一个不断增长的载体中。 – MatlabDoug 2010-06-24 14:22:32
是的,越来越小的数组是(相对)很好,这就是为什么我选择1e4元素;) – Edric 2010-06-24 15:19:59
尽管可以从空矩阵开始并通过连接(添加)新元素来扩展它,但在MATLAB中向量扩展的效率非常低,因为每次连接另一个元素时都需要新的内存。预分配预先建立了一个正确大小的矩阵,然后可以用正确的值替换每个零元素。这种方法效率更高,特别是在涉及循环的程序中。
如果您要处理大型矩阵,这很有帮助。或者如果你打算使用稀疏矩阵。当您一次又一次使用相同的矢量或矩阵时,这也很有帮助。
- 1. 与Matlab的从零矩阵
- 2. MATLAB矩阵问题
- 3. 从matlab中删除矩阵中的零
- 4. MATLAB用零扩展矩阵
- 5. 从零开始实施BlockingQueue的问题
- 6. 展开矩阵(MATLAB)
- 7. MATLAB从矩阵
- 8. Matlab的:从矩阵
- 9. 关于稀疏矩阵的Matlab问题
- 10. Matlab:填充401x401矩阵的问题
- 11. 矩阵类和零参数问题
- 12. 矩阵末尾的Matlab零填充
- 13. MATLAB Perceptron从零开始 - 或功能
- 14. 变化numpy的阵列开始从零
- 15. 4D矩阵计算,Matlab编码问题
- 16. 问题sub2ind和矩阵矩阵matlab与图像
- 17. 打开载体导入的,归零矩阵在MATLAB
- 18. 从零开始
- 19. MATLAB多维矩阵访问
- 20. Matlab矩阵访问列
- 21. 在Matlab中访问矩阵
- 22. 构建矩阵从另一个矩阵开始
- 23. 获取matlab中混洗矩阵的初始矩阵
- 24. 问题初始矩阵Eigen用指针
- 25. Matlab - 矩阵阵列
- 26. 自动展开matlab矩阵的左侧
- 27. MVC从零开始
- 28. C++从零开始
- 29. RDF从零开始
- 30. Matlab大矩阵
取决于应用程序 – Jacob 2010-06-24 05:31:42