Re: [問題] MATLAB對於大型反矩陣及大型矩陣的運算

看板MATLAB作者 (想買D2000...)時間12年前 (2013/04/29 17:41), 編輯推噓3(302)
留言5則, 3人參與, 最新討論串2/3 (看更多)
第一個問題應該用repmat做比較快 假定你的rowsum是40000x1的vector rowsum_m就會是repmat(rowsum,1,4000); 也就是把rowsum沿row方向複製4000次 萬一發生記憶體不足的狀況 先依據rowsum內的數據作定義後再複製 int8、int16、single、double之類的 我以rand產生rowsum,再轉成int16 依照上述流程跑,應該可以在1秒內完成 第二個問題留給板友接力... 這方面沒什麼研究... ※ 引述《jamesweb3 (James)》之銘言: : 這個問題困擾我很久了~ : 由於實驗的需要,我必須操作大型的矩陣 : 其中以下2個步驟相當緩慢,不知道有沒有人可以幫我解決:( : 1.我的矩陣(A)約要40000*4000這麼大,建造方式是每一個row都是相同的值 : 而這個值就是某個已經建好的vector(B)決定,因此我想到用"迴圈" : for i = 1:S : rowsum_m(i,1:1:4000) = rowsum(i); : end : 結果,迴圈在MATLAB相當慢!!!有沒有好的解決方式? : 2.其中一個步驟需要算反矩陣(temp),導致結果非常非常慢~不知道有什麼問題 : 這個矩陣的大小在40000*40000左右 : 我要計算的是: p1 = (1-alpha)*(1-beta)*(temp\Wuo); : 所以,需要有inv(temp), 我不知道怎麼樣可以快一點 : 一次大多許一小時以上 : ========================= : 煩請知道的朋友告訴我 : 我會感激不盡!! : 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 204.124.83.132

04/29 19:09, , 1F
第二個沒救,反矩陣本來就要算很久。
04/29 19:09, 1F

04/29 19:09, , 2F
一個小時差不多,除非矩陣有特殊的數學結構。
04/29 19:09, 2F

04/29 21:13, , 3F
加入cuda平行計算的行列吧
04/29 21:13, 3F

04/29 21:56, , 4F
可以大致說一下cuda怎麼做嗎?
04/29 21:56, 4F

04/29 22:24, , 5F
買張支援cuda的顯卡先
04/29 22:24, 5F
文章代碼(AID): #1HVa1RoU (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1HVa1RoU (MATLAB)