我使用 matlab 编写了一个有很多迭代的程序。它不能向量化,因为每次迭代中的数据处理都与前一次迭代中的数据处理相关。
然后我使用内置的 MATLAB 编码器将 matlab 代码转换为 mex,结果速度甚至更低。我不知道是否需要自己编写 mex 代码,因为 mex 代码似乎没有帮助。
我使用 matlab 编写了一个有很多迭代的程序。它不能向量化,因为每次迭代中的数据处理都与前一次迭代中的数据处理相关。
然后我使用内置的 MATLAB 编码器将 matlab 代码转换为 mex,结果速度甚至更低。我不知道是否需要自己编写 mex 代码,因为 mex 代码似乎没有帮助。
如果可以的话,我建议您与 MathWorks 联系,向他们寻求建议。如果您无法做到这一点,那么我建议您在放弃之前仔细阅读文档并尝试您找到的所有内容。
我发现对实现 MATLAB 代码的方式进行一些小的更改,对项目设置进行一些小的更改(例如禁用对 Ctrl-C 的响应,对 MATLAB 的外部调用)可以使速度差异在生成的代码中一个数量级或更多。在 MathWorks 之外,没有多少人能够就哪些更改对您来说可能是值得/明智的给出好的建议。
我应该说我只在一个项目中使用过 MATLAB Coder,而且我根本不是一个专家(实际上甚至不是一个称职的)C 程序员。尽管如此,我还是设法生成了混合后的原始 MATLAB 代码大约 10-15 倍的 C 代码。我通过以下方式实现了这一点:a) 只是摆弄所有不同的设置以查看发生了什么;b) 有条不紊地浏览文档,并查看我的 MATLAB 代码中是否有可以应用我遇到的任何构造的地方(例如coder.nullcopy
等coder.unroll
)。当然,您的代码可能会有很大的不同。