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