Matlab “Out of memory”解決辦法

來源:互聯網
上載者:User

 最近有讀者在使用Matlab過程中遇到了"out of memory"的問題。在matlab中此類問題非常常見,我也遇到過很多。一般來說,使用的矩陣的維數一旦過萬,我就會雙手合十,祈禱上蒼,保佑我的記憶體贏得最終勝利。在網上也有很多介紹防止這類問題的文章或文章,我也試過很多,有的還行,有的貌似沒啥用。此篇部落格只是總結總結個人的經驗而已,希望對大家有所協助。

 

解決辦法 1:開啟電腦的3GB開關。

這是我用過的所有方法中最行之有效一個。我的電腦雖然配置的記憶體是3GB,但受XP系統的限制,實際上分配給應用程式的記憶體很小很小。所以我們需要開啟電腦的3GB開關。具體做法是:

 

右鍵點擊我的電腦 -> 屬性 -> 進階 -> 啟動和故障恢複 -> 設定 -> 編輯。

進入boot.int,將你的系統名

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional "

改為

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional
with 3GB switche" /3gb

 

重新啟動,效果立現,在matlab中輸入feature('memstats'),可以看到現在的實際記憶體已經變為了3GB。

 

解決辦法 2:使用pack

在matlab中,對於非稀疏的矩陣而言,只有整塊的記憶體才能夠被使用。比如你有兩塊記憶體,一塊500M,一塊200M,而矩陣所需的空間要600M,即使500+200>600,可你還是不能正常運行。而pack即為記憶體片段的拼接方法。

所以,最好讓matlab程式分段運行,在每一段運行前,在matlab命令列中敲入"pack"。如所示:

可以將小記憶體片段充分利用起來,積少成多,緩解記憶體危機。

 

解決辦法 3:及時釋放不用的變數

用很多變數以後用不到,或暫時用不到。對於前者,可以微微一笑,直接clear掉,眼睛都不帶眨的。而對於後者,可以先將其存入檔案然後clear,待到用時再load進來即可。

 

解決辦法 4:採用疏鬆陣列

對於0很多的矩陣,盡量採用疏鬆陣列的方式儲存。

 

 

如果上述辦法都沒有用的話,就只能在自己程式中找找原因了,看看能不能改改程式結構,或者讓矩陣分次處理。

 

如果還不行。。。。。。那隻有雙手合十了^_^

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.