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代码。