非常有趣的問題(bug?)已回收

看板MATLAB作者 (初衷)時間16年前 (2009/07/03 19:56), 編輯推噓2(201)
留言3則, 3人參與, 最新討論串1/1
發現了一個應該算得上是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
XD
07/04 00:33, 1F

07/04 01:45, , 2F
用這語法試試 S = sparse(i,j,s, m,n) ;
07/04 01:45, 2F

07/08 07:00, , 3F
感謝 :)
07/08 07:00, 3F
文章代碼(AID): #1AJV7Jk3 (MATLAB)
文章代碼(AID): #1AJV7Jk3 (MATLAB)