[運算] 求助 想從改善程式碼解決out of memory
大家好
小弟目前正在跑一個計算
流程大致上是這樣
先產生一個empty matrix
用for迴圈跑不同的參數 ex. for x = 0 : 0.01 : 0.12
每次都解一個大型矩陣
大概10000x10000
每次會解出10000個eigenvalue
接著把這個10000個eigenvalue用column方式儲存到empty matrix中
所以跑完之後那個empty矩陣就會變成
[[v_0] [v_0.01] [v_0.02] ... [v_0.12] ]
每個v都代表一個 10000x1 的column
接下來再把這個矩陣的"每一個row"依次對x = 0 : 0.01 : 0.12 作圖
所以會畫出10000條線
原本10000x10000的case我的電腦還是可以跑
但再變大幾倍後就會出現out of memory
我想了幾種解決方法,但不清楚怎麼執行,請各位大大幫幫我
(1)
我想說out of memory應該是因為最後那個empty matrix會變超大
所以想說能不能自行產生10000個empty matrix
每次解完一次10000x10000矩陣的eigenvalue後 把column中每個元素依次存在
那10000個empty matrix中
這樣的話最後就會有10000個矩陣
但是每個矩陣都是小小的row (ex. 0:0.01:0.12 大概才1*13的 row array而已)
我希望程式碼大概長這樣
for i = 1 : 1 : 10000 ;
造出"名字是 Ai "的empty matrix ; ←這邊不會用orz
end
for x = 參數 ;
解10000x10000的矩陣
解出10000x1的eigenvalue column vector(假設叫他v)
把每個元素依次存在對應的Ai empty matrix中
for j = 1 : 1 : 10000 ;
Aj = [Aj v(j)] ; ←這邊不會用orz
end
end
不知道這樣把矩陣拆成10000個小矩陣的方法能不能解決
(2)
研究室好像有大型電腦 但我的project以理論推導為主 幾乎沒碰過
如果用大型電腦幫我跑的話 能不能用我最一開始的流程呢?
就是直接存一個超大容量的矩陣 再一次對個別row作圖
我是希望最後最上面那個流程可以處理70000x70000的矩陣
不知道大型電腦有沒有辦法解決out of memory的問題
小弟仍在學習matlab
關於以上幾點問題希望各位指教
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.43.111.160
※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1498886118.A.FA1.html
※ 編輯: ocf001497 (114.43.111.160), 07/01/2017 13:18:57
→
07/01 13:27, , 1F
07/01 13:27, 1F
→
07/01 13:27, , 2F
07/01 13:27, 2F
QQQ還是說只能求助大型電腦?
※ 編輯: ocf001497 (114.43.111.160), 07/01/2017 13:29:26
所以w大的意思是就算修改程式碼也沒辦法直接跑嗎?
※ 編輯: ocf001497 (114.43.111.160), 07/01/2017 13:32:23
推
07/01 13:43, , 3F
07/01 13:43, 3F
→
07/01 13:44, , 4F
07/01 13:44, 4F
→
07/01 13:45, , 5F
07/01 13:45, 5F
→
07/01 13:46, , 6F
07/01 13:46, 6F
推
07/01 13:48, , 7F
07/01 13:48, 7F
推
07/01 14:15, , 8F
07/01 14:15, 8F
→
07/01 14:16, , 9F
07/01 14:16, 9F
→
07/01 14:17, , 10F
07/01 14:17, 10F
→
07/01 14:17, , 11F
07/01 14:17, 11F
推
07/01 14:22, , 12F
07/01 14:22, 12F
→
07/01 14:22, , 13F
07/01 14:22, 13F
→
07/01 14:23, , 14F
07/01 14:23, 14F
推
07/01 14:31, , 15F
07/01 14:31, 15F
→
07/01 14:31, , 16F
07/01 14:31, 16F
哦哦不好意思忘記說,我想PLOT出來的東西就是要呈現
超多線全部疊在一起的連續感,因為有特殊的東西可以看
所以真的只能用大型電腦跑嗎 還是也無法QQ
※ 編輯: ocf001497 (114.43.111.160), 07/01/2017 14:36:54
還想請問一下存成點陣圖具體的做法是啥呢 謝謝!!
※ 編輯: ocf001497 (114.43.111.160), 07/01/2017 14:39:00
推
07/01 14:38, , 17F
07/01 14:38, 17F
→
07/01 14:39, , 18F
07/01 14:39, 18F
→
07/01 14:39, , 19F
07/01 14:39, 19F
感謝回覆!
但現在我有點卡住的地方是 因為我每次對角化出來的東西都是10000x1的column
如果要畫圖的話實際上是畫
[ [v_0] [v_0.01] ... [v_0.12] ]這種12個10000x1 column排在一起後的row
也就是說我沒辦法在做一次計算就存一個row
不知道這該怎麼解決呢
謝謝!
※ 編輯: ocf001497 (114.43.111.160), 07/01/2017 14:45:43
→
07/01 14:42, , 20F
07/01 14:42, 20F
→
07/01 14:44, , 21F
07/01 14:44, 21F
→
07/01 14:45, , 22F
07/01 14:45, 22F
另外out of memory我想說是不是因為那個要解的矩陣太大
而不是因為最後那個[ [v_0] [v_0.01] ... [v_0.12] ]太大
因為這個比要解的10000x10000的矩陣小很多
謝謝
※ 編輯: ocf001497 (114.43.111.160), 07/01/2017 14:49:12
推
07/01 14:50, , 23F
07/01 14:50, 23F
→
07/01 14:50, , 24F
07/01 14:50, 24F
→
07/01 14:50, , 25F
07/01 14:50, 25F
→
07/01 14:52, , 26F
07/01 14:52, 26F
哦哦! 感謝! 大概知道概念了
但想請問一下如果是70000x70000是不是連寫出這個矩陣都有問題...
※ 編輯: ocf001497 (114.43.111.160), 07/01/2017 14:55:34
推
07/01 14:56, , 27F
07/01 14:56, 27F
→
07/01 14:57, , 28F
07/01 14:57, 28F
→
07/01 14:57, , 29F
07/01 14:57, 29F
哦哦! 我的矩陣應該蠻多零的!
所以可以用一樣的方式 只是我把矩陣建起來的時候不用正常的矩陣
用sparse就可以嗎
謝謝
※ 編輯: ocf001497 (114.43.111.160), 07/01/2017 15:02:12
推
07/01 15:01, , 30F
07/01 15:01, 30F
→
07/01 15:01, , 31F
07/01 15:01, 31F
→
07/01 15:02, , 32F
07/01 15:02, 32F
推
07/01 15:11, , 33F
07/01 15:11, 33F
好! 我來試試 感謝
※ 編輯: ocf001497 (49.214.16.125), 07/01/2017 15:25:06
→
07/01 17:11, , 34F
07/01 17:11, 34F
→
07/01 17:11, , 35F
07/01 17:11, 35F
推
07/03 17:29, , 36F
07/03 17:29, 36F
推
07/03 17:34, , 37F
07/03 17:34, 37F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章