[討論] Matlab的計算速度(迴圈與矩陣)已回收

看板MATLAB作者 (施抄)時間14年前 (2011/04/06 20:10), 編輯推噓3(308)
留言11則, 3人參與, 最新討論串1/1
小弟是matlab的新手 之前習慣用C/C++ 接觸到matlab功能這麼強的工具 覺得蠻不可以思議的@@ 查閱了一些網路資料之後 會開始用matlab解決一些矩陣的計算問題 但是有一件事情我真的想不透 例如向量的常數積(scalar) 有很多種寫法 1. A(1:n) = A(1:n)*C 2. for i=1:n A(i) = A(i)*C 基本上在C/C++ 是只有後者的寫法 但是隨著這個向量的length變大 第一種算法會比第二種算法快很多 可否請問matlab是怎麼處理這種運算的細節 產生這樣的結果? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.91.122

04/06 21:05, , 1F
前者會一次配置好A(:)所需記憶體,後者逐次配置所以較慢
04/06 21:05, 1F

04/06 21:05, , 2F
不過向量型的寫法在後期版本+現代電腦配備下已無過大差異
04/06 21:05, 2F

04/08 13:52, , 3F
我個人的理解是,第一種寫法(矩陣運算)時, 可能不用做記憶
04/08 13:52, 3F

04/08 13:53, , 4F
體位址查找,因為Matlab對矩陣運算有最佳化過
04/08 13:53, 4F

04/08 13:55, , 5F
對於資料或程式碼都放在附近,只用指標位移(加/減)就可以
04/08 13:55, 5F

04/08 13:55, , 6F
找到資料
04/08 13:55, 6F

04/11 02:07, , 7F
個人猜想,以物件導向去看,第二種寫法每次都要做資料型態
04/11 02:07, 7F

04/11 02:11, , 8F
檢查比較、轉換、建構、解構等過程,可能得重覆 n 遍
04/11 02:11, 8F

04/11 02:12, , 9F
第一種寫法,一般的雜事只要做一遍,然後花全力在計算上
04/11 02:12, 9F

04/11 02:21, , 10F
尤其 matlab 在處理 A(i)時,可能是當成 只有 1個element
04/11 02:21, 10F

04/11 02:24, , 11F
的 data array
04/11 02:24, 11F
文章代碼(AID): #1Dd5WqLN (MATLAB)