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