[問題] 關於影像處理使用cov "out of memory"

作者: ossianlin (linossian)   2015-05-30 22:31:43
這個問題困擾了我快三個禮拜...應該更久...
不知道為甚麼都會out of memory 也上網查過解法但都沒甚麼解法...
學校實驗室電腦是32-bit的 記憶體2GB 目前只剩虛擬記憶體擴充那招沒用過
不過目前一直找不到Boot.ini 而且老師也認為不會這麼麻煩才是
實驗室學長建議從程式碼下手,目前就將前面步驟用了save/load法
不過進行covariance的步驟還是出現這狀況...
想不到辦法只好來這邊尋求答案...
以下先上程式碼:
load 'martix_X' %X為一輸入影像群之大矩陣,其大小為76800xN N為輸入影像張數
a = transpose(X);
cov_x = cov(single(a)); or cov_x = cov(double(a));
得到結果都是out of memory...
不填double/single則error bsxfun
現在卡在這段後面要再做eigen根本不能往下做...
跪求版上前輩指導了@@"
作者: jatj   2015-05-31 01:16:00
打whos就可以看變數佔的大小 可以估算哪個佔太多空間
作者: celestialgod (天)   2015-05-31 09:13:00
用迴圈算covariance上三角部分,用cov可能用到太多記憶體2G的電腦,系統大概用掉一半,matlab最多只有1G可以使用,矩陣一大,真的很容易記憶體不足error bsxfun應該是因為取完平均要跟原矩陣做相減時,發現原矩陣不是double.... 才出問題。沒注意到你還有另立一個transpose...這個是主要原因直接cov(double(X'))試試看轉置前的COV是5X5...轉置後是76000 X 76000記憶體會不夠是因為要存76000 x 76000的矩陣Requested 76000x76000 (43.0GB) array只是我很好奇,這樣的變異數矩陣是有問題的...只有五列...你要估計 76000*38000個參數qq76001*38000 (更正)至於cov的用意,我也不清楚你們的目的無從解釋

Links booklink

Contact Us: admin [ a t ] ucptt.com