回答
这与询问相同:为什么要创建一个值为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. 从零开始实施BlockingQueue的问题
- 3. 关于稀疏矩阵的Matlab问题
- 4. 矩阵末尾的Matlab零填充
- 5. 矩阵类和零参数问题
- 6. 4D矩阵计算,Matlab编码问题
- 7. 打开载体导入的,归零矩阵在MATLAB
- 8. 从零开始
- 9. Matlab矩阵访问列
- 10. 在Matlab中访问矩阵
- 11. 获取matlab中混洗矩阵的初始矩阵
- 12. Matlab - 矩阵阵列
- 13. 在MATLAB矩阵
- 14. Matlab大矩阵
- 15. Joomla从零开始
- 16. MVC从零开始
- 17. C++从零开始
- 18. 矩阵矩阵在Matlab中的数组?
- 19. BitmapData.draw()矩阵问题
- 20. CATransForm3D矩阵问题
- 21. 从矩阵生成的矩阵与Matlab生成的Python图形
- 22. 从MATLAB矩阵阵列创建对角线矩阵
- 23. 从MATLAB中的矩阵和矢量创建三维矩阵
- 24. 零填充矩阵
- 25. 有关矩阵的问题
- 26. Python的矩阵问题
- 27. Python中的矩阵问题
- 28. C中的矩阵问题
- 29. MATLAB - 用子矩阵创建矩阵
- 30. Matlab:重塑矩阵来分隔矩阵
取决于应用程序 – Jacob 2010-06-24 05:31:42