如何加速MATLAB代码?

时间:2012-07-15 22:23:03

标签: performance matlab

就像MATLAB作为一种数学语言一样,它的速度并不像它那样快。我想知道加速运行MATLAB代码的一般做法是什么?例如,我知道如果不是运行for循环,可以用矢量/矩阵格式进行计算,他将看到运行代码的速度加快。

我想知道其他什么建议。

5 个答案:

答案 0 :(得分:5)

以下是一些基本的性能提示:

  1. 了解如何使用分析器了解您的哪些部分 计算很慢
  2. 通过矢量化限制昂贵的函数调用量
  3. 预先分配数组,而不是在循环中增长它们
  4. 使用多线程函数(例如bsxfun
  5. 使用最新版本的Matlab - 有 过去5年来,业绩大幅提升
  6. 使用并行工具箱进行多核和/或GPU处理
  7. 使用高效算法
  8. 在适当的地方使用Java或C / C ++代码(虽然加速可能令人失望)

答案 1 :(得分:4)

如果您正在执行大量可轻松并行化的操作,parfor会自动并行化您的for循环:http://www.mathworks.com/help/toolbox/distcomp/parfor.html

答案 2 :(得分:2)

安装Lightspeed。

我最近经历了在我的Mac上安装Tom Minka的Lightspeed的令人沮丧的过程。在此过程中,我学到了一些值得与其他Mac用户分享的艰苦教训。 我的系统有以下规格 OS X版本10.8.5 Xcode版本4.6.3 Matlab版本2011a

1)确保Lightspeed安装在名称中没有空格的路径上。我错误地把它放在“Library / Application Support / Matlab”中,这给我带来了无穷无尽的麻烦。特别是,它引发了Tomer Levinboim(levinboim.blogspot.co.nz)报告的相同问题,并且他的补救措施没有完全解决问题!

2)阅读Michel Valstar的笔记“在Mac上编译Matlab Mex文件”并安装Mathworks推荐的补丁(http://www.mathworks.com/matlabcentral/answers/94092)。此补丁应用Levinboim识别的所有必需的标志/选项更改。

3)更改lightspeed文件夹内install_lightspeed.m文件中的行options.COMPFLAGS,指向:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk

4)在Matlab中检查当前路径是否指向Lightspeed文件夹。运行命令install_lightspeed。如果成功运行test_lightspeed。你现在应该有一个工作版的Lightspeed!

5)路径设置在会话之间保持不变,因此在Mac上,Read Me中建议的startup.sh方法似乎是不必要的。但是,如果您希望沿着该轨道前进,请先阅读:
Where is startup.m supposed to be? http://obasic.net/set-your-customized-startup-file-for-matlab

答案 3 :(得分:1)

您可能会开始回顾一些开始考虑矢量化的方法here 在此之后,给出here的PDF虽然不完整,却提供了许多可以提供良好性能的Matlab习语。

答案 4 :(得分:0)

我刚在这里找到了这个:Writing Fast MATLAB Code。 通过Pascal Getreuer和这里:Lightspeed Toolbox。好东西......