使用MATLAB编码器

时间:2018-05-02 14:20:00

标签: c++ matlab matlab-deployment matlab-coder

我要转换MATLAB代码"对矩阵进行全部操作"对于C ++,我不确定MATLAB编码器是否能生成有效的C ++代码。尽管它耗费时间,但最好手动转换它吗?

1 个答案:

答案 0 :(得分:1)

正如其他人所说的那样,使用MATLAB Coder生成代码,使用编译器的优化进行编译,并且测量是了解您的需求是否得到满足的唯一方法。

MATLAB Coder直接为大多数算法生成代码,而无需使用外部库。在某些情况下,可以使用库,或者可以由用户请求库。您特别感兴趣的可能是BLAS和LAPACK集成。

如果您正在将线性代数作为矩阵运算的一部分,那么请考虑配置MATLAB Coder以调用您选择的高性能BLAS和LAPACK库:

https://www.mathworks.com/help/coder/ug/speed-up-matrix-operations-in-generated-standalone-code-by-using-blas-calls.html

https://www.mathworks.com/help/coder/ug/generate-code-that-calls-lapack-functions.html

这将导致MATLAB Coder通过调用您为*, \, linsolve, lu, svd, eig等线性代数运算指定的库来替换其算法。

MATLAB Coder提供了改进生成代码性能的建议:

https://www.mathworks.com/help/coder/optimize-speed-of-generated-code.html

在这种情况下,一种可能的方法是使用prof,VTune,AMD Codeanalyst,Visual Studio性能工具等分析器生成代码并对其进行分析。如果您发现一些昂贵的内核,其中生成的代码可能不会满足您的性能需求,使用类似C的界面为这些部件手写替换,并使用coder.ceval将它们与生成的代码集成。