matlab 加速小技巧

来源:互联网 发布:java去除双引号 编辑:程序博客网 时间:2024/04/29 16:00

一.如何提高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 短整数替代 双精度。


0 0
原创粉丝点击