毕业季马上要到了,给大家总结一些我平常用到的也许奇怪但是好用的Matlab技巧
Matlab加速计算技巧
Matlab作为第四代编程语言(通俗点也叫脚本语言),普遍通常存在运行效率较低的问题。当然有的程序运行时间只有几s这时候效率低不低也无所谓,但是有的程序需要运行几天甚至一个月,这时候你就要考虑一下你的程序是不是要加速一下,不然你怎么获取运行结果然后给人演示呢。
常用的加速手段主要有这几类
- 代码逻辑优化,尽量减少for循环,采用matlab自带的矩阵运算函数代替循环运算。大部分情况下效率比较低就是因为代码for循环和废语句太多。实现难度3颗星,效果5颗星。没有通常优化情况,可能从0倍到几千倍甚至更多。
- 开启Matlab的并行计算功能,现在的大部分CPU都是多核多线程,Matlab本身默认是单线程运行,完全没利用上CPU强大的并行能力。实现难度1颗星,效果3颗星。通常可以快2-4倍。
- 部分代码函数改用C语言写Matlab与C混编,C语言的运行效率要远高于M语言。实现难度5颗星,效果5颗星。通常可以快十几倍。
- 提前运行完部分结果后,保存这个结果。然后跑的时候直接load这个结果再做一些处理即可出图给人演示,实现难度1颗星,效果5颗星。推荐Matlab不太熟练的朋友可以用这种方式,不过要考虑被老师发现的风险。
代码优化流程
- 使用Matlab自带的程序运行计时功能,统计各部分语句和函数的运行时间。
- 找到其中核心导致运行效率低下的核心代码区域,依次尝试用代码逻辑优化、并行运算、C语言改写的方式优化代码运行效率。
- 重复步骤1-2直至代码优化至运行时间可以接受。
下面是一些具体的优化例子,请点击连接依次学习