用过Matlab的同学应该都知道,Matlab的慢是出了名的,但是再慢也有优化的方式,下面我们给出几个Matlab编程中常用的优化技巧。
在讲优化方法之前,首先要说的就是Matlab中用tic toc
的方式来计算运行时间,这是个常识。当然,想统计具体的耗时,可以用profile
工具。
向量化操作
这个应该是用过Matlab的同学都清楚的一点,Matlab中操作向量和矩阵的速度要比使用for循环的速度快很多,是因为其底层调用了高性能线性代数库BLAS库和LAPACK库。这个就不多说了。
内存预分配
在Matlab中我们可以定义一个空矩阵
mtx = [];
然后后面再给它加入一些数据,而且这个矩阵大小可以随着我们填入数据的多少而变化。像下面这个程序
tic
n = 1000;
mtrx = [];
init = 1.0;
for i = 1:n
for j=1:n
mtrx(i,j) = init + 1.0;
end
end
toc
这个程序的运行时间是多久呢?在我电脑上是0.2秒。
那这个程序有什么问题呢