我要转换MATLAB代码"对矩阵进行全部操作"对于C ++,我不确定MATLAB编码器是否能生成有效的C ++代码。尽管它耗费时间,但最好手动转换它吗?
答案 0 :(得分:1)
正如其他人所说的那样,使用MATLAB Coder生成代码,使用编译器的优化进行编译,并且测量是了解您的需求是否得到满足的唯一方法。
MATLAB Coder直接为大多数算法生成代码,而无需使用外部库。在某些情况下,可以使用库,或者可以由用户请求库。您特别感兴趣的可能是BLAS和LAPACK集成。
如果您正在将线性代数作为矩阵运算的一部分,那么请考虑配置MATLAB Coder以调用您选择的高性能BLAS和LAPACK库:
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
将它们与生成的代码集成。