加速运行的其它方法

1.用MEX文件编写循环代码

必须使用for循环时,把它写为MEX文件。这样,循环会运行得更快。因为不必在每次运行循环中的语句时都对它们进行解释。

2.变量赋值

进行变量赋值时,要注意两点。首先,改变已有变量的数据类型或数组形状会使程序运行速度减慢,因为这需要额外的时间进行处理。需要保存不同类型的数据时,建议创建新变量。其次,如果一个变量已经赋给了实数或复数,现在赋给它复数或实数会影响运行速度。

3.操作实型数据

MATLAB为操作实型数特意设计了一些函数,使用这些函数进行实数操作时比使用一般函数快。这些函数包括reallog,realpow和realsqrt等。

4.使用合适的逻辑运算符

进行逻辑AND或逻辑OR时,有两种选择,如表1-3所示。

表1-3 逻辑AND和逻辑OR的两种选择

运 算 符 描 述
&, | 对数组进行逐元素的逻辑AND或逻辑OR比较
&&, || 对标量值进行逻辑AND或逻辑OR比较

在if和while语句中,使用&&和||更有效率。因为这两个运算符不一定计算整个表达式。例如下面的语句中,只要输入参数的个数小于3,MATLAB就会只计算表达式的前半部分,而不会继续计算下去。

if (nargin >= 3) && (ischar(varargin{3}))

5.重载内部函数

一般不要重载MATLAB内部函数,因为重载内部函数比直接使用内部函数费时。

6.函数比脚本运行更快

函数中的代码比脚本中的代码运行得更快。在MATLAB中,每次使用脚本时都要把它装入内存,然后逐行运行;而函数则被编译为P代码,只需要装入内存一次。

7.调用很多M文件时把M文件编译成P代码

使用下面的命令,可以将M文件编译成P代码。

pcode mfilename

其中,mfilename是M文件的名称。使用P代码,一方面可以对MATLAB代码进行加密,另一方面可以提高运行速度。

8.使用load函数和save函数比MATLAB文件I/O过程更好

使用这两个函数,运行更快,内存碎片更少。

9.避免大型后台处理

避免在MATLAB中运行程序时,在后台进行大型处理,这样,可以为MATLAB空出更多CPU时间。