那么,Matlab能够在一定的限制下将.m文件转换成mex函数。
例如,不能在要转换的.m文件中调用mex函数。
但是,这个限制是否只针对那些我们没有源代码的mex函数呢?
也就是说,如果我们有一个函数的C中的源代码,并且在Matlab函数中调用该函数,如下所示:
function result = fun() %#codegen
a = ...; %complex large-scale matrix operations
result = cFun(a);
end如上所述,可以使用mex用C编写cFun()以提高性能,但用Matlab编写矩阵操作可能比用C编写矩阵操作更好。
因此,如果我们能够提供cFun()的源代码,并使用Matlab Coder将fun()转换成mex,那么在Matlab中使用矩阵操作的方便性,以及一些C甚至OpenCL操作的性能,都将为我们带来好处。
但这有可能吗?
谢谢!
发布于 2014-04-24 17:41:00
首先,您可以使用coder.extrinsic从生成的C代码或生成的MEX文件中调用MATLAB。如果由于某种原因,您有一个现有的MEX文件,而没有需要调用的源代码,您可以使用与任何其他MATLAB命令相同的方式。
第二:如果您有一些想要从生成的C代码或生成的MEX文件中调用的现有C源代码,则可以通过调用coder.ceval来实现。
我不认为你不能使用OpenCL代码的原因,尽管如果你想利用GPU代码,我认为并行计算工具箱中内置的GPU功能会更方便。
https://stackoverflow.com/questions/23270536
复制相似问题