嗯,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 Coder
将fun()
转换为mex
,那么我们将从矩阵运算的便利性中获益Matlab,以及在C,甚至OpenCL中的一些操作的性能。
但这可能吗?
谢谢!
答案 0 :(得分:2)
首先:您可以使用coder.extrinsic
从生成的C代码或生成的MEX文件中回调MATLAB。如果由于某种原因,您有一个没有需要调用的源代码的现有MEX文件,则可以使用与任何其他MATLAB命令相同的方式执行此操作。
其次:如果您要从生成的C代码或生成的MEX文件中调用一些现有的C源代码,则可以通过调用coder.ceval
来执行此操作。
我不认为这是因为你无法用OpenCL代码做到这一点,尽管如果你想利用GPU代码,我会认为是内置的Parallel Computing Toolbox的GPU功能会更方便。