【问题标题】:Combining matlab code and c/c++ code for mex function using Matlab Coder使用 Matlab Coder 为 mex 函数组合 matlab 代码和 c/c++ 代码
【发布时间】:2014-06-09 20:02:21
【问题描述】:

嗯,Matlab Coder 可以在某些限制下将.m 文件转换为mex函数。

例如,不能在要转换的.m 文件中调用mex 函数。

但是这个限制是否只针对那些我们没有源代码的 mex 函数?

也就是说,如果我们有一个函数的C mex源代码,并且该函数在一个Matlab函数内部被调用,像这样:

function result = fun() %#codegen
a = ...; %complex large-scale matrix operations 
result = cFun(a);
end

如上所述,cFun() 可以使用 mex 用 C 编写以提高性能,但最好用 Matlab 编写矩阵运算而不是 C。

因此,如果我们可以提供cFun()的源代码并使用Matlab Coderfun()转换为mex,我们将受益于Matlab中矩阵运算的便利性和一些运算的性能在 C 中,甚至在 OpenCL 中。

但有可能吗?

谢谢!

【问题讨论】:

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


    【解决方案1】:

    首先:您可以使用 coder.extrinsic 从生成的 C 代码或生成的 MEX 文件中回调 MATLAB。如果由于某种原因您有一个没有需要调用的源代码的现有 MEX 文件,您可以像处理任何其他 MATLAB 命令一样执行此操作。

    其次:如果您想从生成的 C 代码或生成的 MEX 文件中调用一些现有的 C 源代码,您可以通过调用 coder.ceval 来实现。

    我认为您没有理由不能使用 OpenCL 代码执行此操作,但如果您希望利用 GPU 代码,我认为 Parallel Computing Toolbox 的内置 GPU 功能会更好方便。

    【讨论】:

      猜你喜欢
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-18
      相关资源
      最近更新 更多