【问题标题】:How to speed up MATLAB codes?如何加速 MATLAB 代码?
【发布时间】:2012-07-15 22:23:03
【问题描述】:

尽管 MATLAB 作为一种数学语言很出色,但它的速度却没有它想象的那么快。我想知道加快运行 MATLAB 代码的一般做法是什么?例如,我知道如果不是运行 for 循环,而是可以以向量/矩阵格式进行计算,那么他/她将看到运行代码的速度加快。

我想知道还有什么其他建议。

【问题讨论】:

    标签: performance matlab


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 请记住,在某些特定情况下,parfor 循环可能比正常的for 循环还要慢。
      【解决方案3】:

      安装 Lightspeed。

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

      1) 确保 Lightspeed 安装在名称中没有空格的路径上。我错误地将它放在“库/应用程序支持/Matlab”中,这给我带来了无穷无尽的麻烦。特别是,它导致了 Tomer Levinboim (levinboim.blogspot.co.nz) 报告的相同问题,并增加了他的修复并没有完全解决问题的问题!

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

      3) 将光速文件夹内 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) 路径设置在会话之间保持不变,因此自述文件中建议的 startup.sh 方法在 Mac 上似乎是不必要的。但是,如果您想走这条路,请先阅读:
      Where is startup.m supposed to be? http://obasic.net/set-your-customized-startup-file-for-matlab.

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 第一个链接具有指导意义,但有些过时。使用bsxfun 而不是repmat
        • 哎呀,我确认链接已失效。我会弄清楚该怎么做。看起来其他人对另一个答案的投票更多
        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-10-07
          • 2023-03-30
          • 1970-01-01
          • 2021-01-28
          • 2014-12-08
          • 2016-04-14
          • 1970-01-01
          • 2018-04-15
          相关资源
          最近更新 更多