非常有趣的問題(bug?)已回收
發現了一個應該算得上是bug的東西
(or bad implementation)
不知道有沒有人討論過
實驗如下:
N = 某個頗大的數(例如50000)
n = 某個不是很大的數(譬如10好了)
A = sparse(N,N)
B = sparse(N,N)
然後執行這行:
A(n:N,n:N) = A(n:N,n:N) + B(n:N,n:N)
Matlab會告訴你記憶體不足 (喂~ XD)
實際上 n 不需要太小也會有一樣的問題 (譬如N/2)
我的猜測是Matlab在實作這部分時
不管目標矩陣有多稀疏
一律傻傻得new出一塊 (N-n) x (N-n) 的記憶體來做
昏倒...
通常會用sparse,就是因為真得很稀疏想要節省記憶體使用量阿 XDDD
不知道有沒有哪位前輩想到如何解決這個問題??
我的想法是
先用:
foo = A(n:N,n:N) + B(n:N,n:N)
去接 (試過,這步沒有問題)
然後想辦法把 foo 指定(擴張)成為 N x N 那麼大
再把foo加回去 (A = A + foo)
不過那個"擴張"的動作
我一時想不起來可用的指令
看有沒有誰能幫忙一下 :P
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 128.220.224.55
推
07/04 00:33, , 1F
07/04 00:33, 1F
推
07/04 01:45, , 2F
07/04 01:45, 2F
→
07/08 07:00, , 3F
07/08 07:00, 3F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章