使用Matlab Coder将matlab代码和c / c ++代码结合起来用于mex函数

时间:2014-04-24 13:35:32

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

嗯,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()可以用C语言编写,以提高性能,但在Matlab而不是C中编写矩阵运算可能更好。

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

但这可能吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

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

其次:如果您要从生成的C代码或生成的MEX文件中调用一些现有的C源代码,则可以通过调用coder.ceval来执行此操作。

我不认为这是因为你无法用OpenCL代码做到这一点,尽管如果你想利用GPU代码,我会认为是内置的Parallel Computing Toolbox的GPU功能会更方便。