这篇文章是同学发给我的,不知原文出自哪里,介绍的基本上是有些用的小技巧,
关于for循环的应用,据我个人的经验,有些时候下述第一条产生的时间差别甚至会达到一个数量级,还是相当可观的。
不过提高matlab程序效率的最为根本的是结合matlab的特点,精简算法,曾经写过一个积分程序,在访问矩阵的时候,由于及时清除掉了冗余的部分,竟使得速度提高了200倍,而且矩阵规模越大,速度提高越是显著
---------------------------------------------------------
要提高M文件的执行效率,可采用下述的一些技巧。
1.
MATLAB变量的基本类型是矩阵,当对矩阵的每个元素循环处理时,运算速度很慢。因此编程时应尽量把数组和矩阵看作一个整体来进行编程,而不是像其他的程序设计语言那样,使用循环结构对矩阵的元素循环进行处理。利用MATLAB提供的用于矢量化操作的函数,把循环矢量化,这样既可以提高编程效率,也可以提高程序的执行效率。下面给出一个循环的例子:
i=0;
for
end
上述程序段把数组中的每个元素都进行函数值计算,这样会耗费大量的运算时间,我们可以把数组看作一个整体来处理,计算函数值,可以修改这个程序段如下。
n
y
通过使用MATLAB专门提供的测试程序运行时间的函数,可以发现,把数组看作一个整体,进行操作后,执行效率提高约300倍。
另外,在必须使用多重循环的情况下,建议在循环的外环执行循环次数少的,内环执行循环次数多的,这样也可以显著提高程序执行速度。
2.
MATLAB中的变量在使用之前不需要明确地定义和指定维数。但当未预定义数组或矩阵的维数时,当需赋值的元素下标超出现有的维数时,MATLAB
3.
在MATLAB中,矩阵元素的引用可用两个下标来表示。例如:A(i,j)
4.
因为每次调用MATLAB的脚本文件都需要将不必要的中间变量加载到内存中,每执行一次,就加载一次。函数在调用时被编译成了伪代码,只需要加载到内存一次。当多次调用同一个函数时会运行快一些。因此尽量多使用函数文件而少使用脚本文件,也是提高执行效率的一种方法。
5.
当必须使用耗时的循环时,可以考虑将循环体中的语句转换为C-MEX。C-MEX是将M文件通过MATLAB
6.
MATLAB在进行复杂的运算时需要占用大量的内存。合理使用内存和提高内存的使用效率,可以加快运行速度,减少系统资源的占用。
7.
●
●
●
●
●
●
8.
●
●
●
●