MatLab是一个快速开发程序的集成环境,意味着它关注于开发的舒适性,便捷性,而不是像C,Fortran语言关注于计算性能。于是MatLab具有了灵活的语法,并能交互调试。


虽然MatLab并不能像C一样快,但是也许有一些方法,能够让它缩小与C语言的差距。


备注:这并不是matlab初学者教程,而是关于提高matlab代码运行性能的教程。一般而言,本文阐述的方法都能加速matlab代码的运行效率。但是,并没有声明到底哪一种方法是最快的。具体问题具体分析。use at your own risk。


在我们开始之前,让我们先回顾一下,我们学习本文的目的。我们是要抛开语言的区别,寻求运行效率最高的代码吗?

如果是这样,我建议你用C语言开发。其实,我们是想在得到最终结果之前,减少我们的开发,调试,运行时间。

本节阐述几个小技巧让开发更加简单。

1. 代码提示信息

在最近的matlab版本中,代码集成编辑器可以自动反馈可能出现的错误和优化建议。这些提示对学习matlab和优化代码很有帮助。

for k = 1:NumTrials
    r = rand;
    x(k) = runsim(r);
end
可能,编辑器在runsim下有红色波浪线。这时将鼠标停在波浪线上,matlab会自动显示对这段代码的反馈信息。

或者选择Tools    ->    M-Lint    ->    Show M-Lint Report查看全部提示。


2. 代码组织结构


2.1 每个工程使用独立文件夹


这样能够保持相关文件都在一起,简化备份复制工程文件。


2.2 每个文件开头写清注释,特别是注释的第一行


文件开头注释的第一行又叫H1comment。它的作用是当你输入help(cd)时,会得到所有工程文件的列表和它们的H1comments。


2.3 将常用的命令行输入的代码写成脚本


如果发现重复输入一些命令,不如把这些代码写成脚本文件,节约时间并防止自己打错命令。


3. 避免丢失数据


3.1 不要在脚本中使用clear all命令

这是一个能让你触霉头的命令。任何在基本工作空间中存在的重要的变量都会不可挽回地消失。


3.2 小心多个操作对同一变量的修改


此时,result便把与input1有关的结果丢弃了。


3.3 小心能使matlab崩溃的东西


虽然matlab本身很可靠,但是一些第三方的mex函数或是过度的内存操作能够使matlab崩溃。

尤其是处理视频以及大规模的矩阵的时候。


在拥有良好的代码书写规范的前提下,我们开始讨论如何写高质量的matlab代码。