回答
這與詢問相同:爲什麼要創建一個值爲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