1.计算向量、矩阵化,尽量减少for循环
因为MATLAB本来就是矩阵实验室的意思,他提供了极其强大而灵活的矩阵运算能力,你就没必要自己再用自己编写的for循环去实现矩阵运算的功能了。 另外由于matlab是一种解释性语言,所以最忌讳直接使用循环语句。但在有些情况下,使用for循环可以提高程序的易读性,在效率提高不是很明显的 情况下可以选择使用for循环。

2.循环内大数组预先定义--预先分配空间
这一点原则是极其重要的,以至于在编写m程序时编辑器会给出提示“'ver' might be growing inside a loop.Consider prealloacting for speed.”

3.尽可能利用matlab内部提供的函数
因为matlab内部提供的函数绝对是各种问题的最优算法,那写程序都是他们大师级人物写出来的,程序应该说相当高效,有现成的为什么不用那! 这个原则就不用实际的程序测试了。

4. 利用内置函数自动记录运行结果
matlab生成的结果变量只贮存在内存空间中,一旦matlab关闭则会丢失,很多时候需要手工将这些结果存储到我们需要的文件中。事实上,matlab提供 了很多函数可以自动记录结果,如fprintf可以将数据写入txt文件,xlswrite可以将数据写入excel文件等等。这样自动化的命令可以缩减大量时间, 从而提高效率。

5. 在迫不得已要使用较多循环而每一步都很耗时的时候,可以将每一步的结果保存成mat文件,然后在循环的开头用if语句与exist函数进行判断, 如果该文件存在的话,就直接进入下一次循环。这样做的好处是不会因为断电、电脑死机或误操作等原因而重头从第一个循环再次运行。

6. 同时运行多的matlab进程。现在的电脑一般都是多核,一般一个matlab进程会占用一个cpu,因此可以在多核电脑上同时打开多个matlab窗口, 从而执行不同的命令。如四核电脑上可以打开三个matlab窗口分别运行不同的程序,cpu的占用率约为80%,这样既加快了进度,又不会影响电脑的使用。

Original Link: http://ibillxia.github.io/blog/2012/04/25/matlab-code-optimization/
Attribution - NON-Commercial - ShareAlike - Copyright © Bill Xia