编程技巧

MATLAB是解释型语言,计算速度比较慢,所以,在编程时如何提高程序的运行速度是需要重点考虑的问题。本节主要介绍矢量化和预分配内存空间两种提高程序进行速度的方法。[大谦MATLAB,dqmatlab点com]

矢量化

使程序运行更快的方法之一是将构造程序的算法矢量化。在其他程序语言可能使用for循环或do循环的地方,MATLAB可以使用矢量或矩阵操作。

【例3-28】对于下面的程序

code.matlab
x = .01;
for k = 1:1001
   y(k) = log10(x);
   x = x + .01;
end

进行矢量化以后如下所示:

code.matlab
x = .01:.01:10;
y = log10(x);

但是,对于复杂的代码,矢量化的效果并不明显。

预分配内存空间

如果不能矢量化某段代码,则可以通过预分配保存输出的任何矢量或数组的内存空间来加速for循环。

【例3-29】下面的代码用函数zeros预分配for循环中创建的矢量的内存空间,使得这个for循环的运行速度显著加快。

code.matlab
r = zeros(32,1);
for n = 1:32
    r(n) = rank(magic(n));
end

前面的例子没有使用内存预分配,每循环一次,MATLAB解释器就会将r矢量的元素增加一个。而经过内存预分配以后,就取消了这个步骤,从而使程序运行加速。