如何加速MATLAB代码?

5
尽管MATLAB作为一种数学语言非常出色,但其速度并不如人所愿。我想知道加快运行MATLAB代码的一般实践是什么?例如,我知道如果不用for循环而是使用向量/矩阵格式进行计算,就可以看到代码运行速度的提升。
我想知道其他建议。
5个回答

5
以下是几个基本的性能提示:
  1. 学会使用分析器来了解哪些部分的计算速度较慢
  2. 通过向量化来限制昂贵函数调用的数量
  3. 在循环中预先分配数组,而不是在循环过程中增加它们的大小
  4. 使用多线程函数(如bsxfun
  5. 使用最新版本的Matlab - 在过去5年中已经取得了巨大的性能提升
  6. 使用并行工具箱进行多核和/或GPU处理
  7. 使用高效的算法
  8. 在适当的情况下,使用Java或C / C ++代码(尽管速度提升可能令人失望)

4

请记住,在某些特定条件下,parfor循环可能比普通的for循环更慢。 - Mohammad Jafar Mashhadi

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


1

您可以从这里开始审查一些关于向量化的思考方式。
之后,这里提供了许多Matlab习语,尽管不完整,但能够提供良好的性能。


1
第一个链接很有启发性,但有点过时了。请使用bsxfun代替repmat - Jonas
哎呀,我确认这些链接已经失效了。我会想办法解决的。看起来其他人更多地投票支持另一个答案了。 - Prashant Kumar

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接