matlab 加速小技巧

一.如何提高MATLAB速度
   1、只有使用以下數據類型,matlab纔會對其加速:
    logical,char,int8,uint8,int16,uint16,int32,uint32,double 而語句中如果使用了非以上的數據類型  則不會加速,如:numeric,cell,structure,single,function handle,java classes,user classes,int64,uint64
    2、matlab不會對超過三維的數組進行加速。
    3、當使用for循環時,只有遵守以下規則纔會被加速:a、for循環的範圍只用標量值來表示;
b、for循環內部的每一條語句都要滿足上面的兩條規則,即只使用支持加速的數據類型,只使用三維以下的數組;c、循環內只調用了內建函數(build-in function)。
    4、當使用if、elseif、while和switch時,其條件測試語句中只使用了標量值時,將加速運行。
    5、不要在一行中寫入多條操作,這樣會減慢運行速度。即不要有這樣的語句:

x = a.name; for k=1:10000, sin(A(k)), end;
    6、當某條操作改變了原來變量的數據類型或形狀(大小,維數)時將會減慢運行速度。
    7、應該這樣使用復常量x = 7 + 2i,而不應該這樣使用:x = 7 + 2*i,後者會降低運行速度。
二.MATLAB出現out of memory提示:
   matlab向系統申請內存空間過大,遭拒絕,出現此錯誤。即使當前計算機有4G內存+4G虛擬內存

     如果你的系統是32位系統(進程最大支配2G空間,另外2G給系統進程了),在使用matlab 運行耗內存程序時候,會可能出現 out of memory 錯誤。這是因爲matlab沒有足夠內存可以使用的緣故。解決的簡單方法是加內存和升級爲64位系統了。

matlab具體能支持多大的數據呢?我們可以使用memory命令來查詢。可以在matlab命令行輸入 memory 看看你的系統的限制

我的系統是:

memory
Maximum possible array:            1451 MB (1.521e+009 bytes) *    當前系統數組能佔的最大內存
Memory available for all arrays:   1451 MB (1.521e+009 bytes) *    當前系統變量可被分配的空間
Memory used by MATLAB:              126 MB (1.320e+008 bytes)    已經使用的內存熟練
Physical Memory (RAM):             2038 MB (2.137e+009 bytes)     系統物理內存數量

* Limited by System Memory (physical + swap file) available. 打星號表示受限於系統內存和交換空間的大小

 

除了升級內存和升級64位系統外,下面幾個方法也是解決之道。

增加虛擬內存
採用PACK (在命令行輸入 pack 整理內存空間)
採用3GB 開關啓動系統(修 改 c盤根目錄 boot.ini 啓動選項加上 /3G 例如:multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /3G

優化程序,減少變量 (使用稀疏矩陣 sparse ) save 保存變量 clear 變量 load 變量,需要時再讀出來
如果必有必要,不要啓動java虛擬機,採用matlab -nojvm啓動 (在快捷方式屬性裏面的 "..../matlab.exe") 改爲("...../matlab.exe" - nojvm)
#關閉Matlab Server  

使用 單精度 single 短整數替代 雙精度。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章