提高MATLAB速度的方法
摘要:介绍科学计算软件MATLAB的几则使用技巧,对加快启动速度和提高运行速度有重要的参考价值。
关键词:MATLAB;启动速度;运行速度 中图分类号:TP312文献标识码:A文章编号:1009-3044(2011)20-4968-02
The Method of Improving the Speed of MATLAB ZHANG Xiao-li
(Computer Department, Xi'an Institute Of Post & Telecommunication, Xi'an 710061, China)
Abstract: Several methods ofhow to use the scientific computing software MATLAB, are presented in this paper. They would be beneficial to accelerate its start-up speed and improve its running speed.
Key words: MATLAB; start-up speed; running speed 科学计算软件MATLAB在各专业领域得到越来越广泛的应用,逐渐成为教学和科研不可缺少的工具。工具包之多,软件所占资源之多,使得硬件条件较差的计算机不能很好的运行MATLAB软件。本文介绍加快MATLAB的启动速度和运行速度的几则使用技巧,供读者参考。
1 加快MATLAB启动速度
MATLAB版本升级很快,每次升级给用户带来很多新的工具箱,提供很多新的功能,但对计算机硬件配置的要求越来越高,启动和运行速度也越来越慢。为了加快MATLAB的启动速度,有以下三种方法。 1.1 更改MATLAB启动快捷方式
在缺省配置下,MATLAB有一个启动闪屏(splash windows),去掉它可以节省一定的内存消耗,从而加快启动。在MATLAB启动快捷方式后添加命令行参数“-nos-plash”即可去掉闪屏。
缺省配置下,MATLAB会启动虚拟机,这会消耗大量内存。添加命令行-nojvm”可禁用JAVA 虚拟机。 MATLAB启动快捷方式命令形
如:\。经过以上配置,MATLAB启动和运行速度会得到大幅提升。 禁用JAVA虚拟机后,MATLAB中有些功能,诸如:调试功能、可视化界面设计功能不能使用,但大多数其它功能可正常运行。如果使用的功能需要JAVA虚拟机支持,启动时将命令行参数“-nojvm”去掉即可。 1.2 修改matlabrc.m文件
MATLAB在多种操作系统中、多种屏幕分辨率下均可正常运行,MATLAB启动时自动运行matlabrc.m文件。而这个
MATLAB脚本会判断当前操作系统,会检测运行环境(比如屏幕分辨率),从而设置相关系统参数。但一般用户都只在一种操作系统中(比如Windows XP)、一种喜好的环境下(比如将屏幕分辨率设为1024x768)使用MATLAB,我们可以把这些判断语句去掉,直接设置系统参数,并删去(或注释掉)一些无关的语句,从而一定程度上缩短MATLAB启动时间。 1.3 更改MATLAB搜索路径
MATLAB启动时会添加搜索路径。如果安装了多个工具箱,搜索路径会很多。过多的搜索路径除了减缓启动速度外,还会影响MATLAB执行效率。因为MATLB执行程序时会在这些路径中寻找M文件。而实际上我们不会为完成某个任务使用所有的工具箱。为提高启动和运行速度,可以修改pathdef.m文件,将我们暂时不用的工具箱和其它搜索路径注释掉(MATLAB程程序以%为注释标识),从而加快启动和运行。
2 提高MATLAB运行速度
加快了MATLAB的启动速度还是不够的,在编程的过程中,总结出遵循以下的原则才能保证MATLAB程序高速的运行。
2.1 尽量避免使用循环结构
MATLAB变量的基本类型是矩阵,当对矩阵的每个元素循环处理时,运算速度很慢。因此编程时应尽量把数组和矩
阵看作一个整体来进行编程,而不是像其他的程序设计语言那样,使用循环结构对矩阵的元素循环进行处理。利用MATLAB提供的用于矢量化操作的函数,把循环矢量化,这样既可以提高编程效率,也可以提高程序的执行效率。 2.2 在使用数组或矩阵之前先定义维数
MATLAB中的变量在使用之前不需要明确地定义和指定维数。但当未预定义数组或矩阵的维数时,当需赋值的元素下标超出现有的维数时,MATLAB 就为该数组或矩阵扩维一次,这样就会大大降低程序的执行效率。因此,在使用数组或矩阵之前,预定义维数可以提高程序的执行效率。 2.3 尽量多使用函数文件少使用脚本文件
因为每次调用MATLAB的脚本文件都需要将不必要的中间变量加载到内存中,每执行一次,就加载一次。函数在调用时被编译成了伪代码,只需要加载到内存一次。当多次调用同一个函数时会运行快一些。因此尽量多使用函数文件而少使用脚本文件,也是提高执行效率的一种方法。 2.4 内存管理
MATLAB在进行复杂的运算时需要占用大量的内存。合理使用内存和提高内存的使用效率,可以加快运行速度,减少系统资源的占用。对于内存中不再使用的或者临时变量使用Clear指令删除掉,使用 Save指令将变量存入磁盘, 使用 Load指令将save命令存入的变量载入内存,使用Quit
指令退出MATLAB,并释放所有分配的内存,使用 Pack指令把内存中的变量存入磁盘,再用内存中的连续空间载回这些变量,考虑到执行效率问题,不能在循环中使用。 2.5 数据选取和书写
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循环时,只有遵守以下规则才会被加速: ① for循环的范围只用标量值来表示;
② for循环内部的每一条语句都要满足上面的两条规则,即只使用支持加速的数据类型,只使用三维以下的数组; ③ 循环内只调用了内建函数(build-in function)。 4)当使用if、elseif、while和switch时,其条件测试语句中只使用了标量值时,将加速运行。
5)不要在一行中写入多条操作,这样会减慢运行速度。即不要有这样的语句: x = 5; for k=1:10000, sin(A(k)), end; 6)当某条操作改变了原来变量的数据类型或形状(大小,维数)时将会减慢运行速度。 3 实例