簡體   English   中英

使用Matlab Coder將matlab代碼和c / c ++代碼結合起來用於mex函數

[英]Combining matlab code and c/c++ code for mex function using 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()可以使用mex以C語言編寫以提高性能,但是在Matlab中編寫矩陣運算而不是C可能更好。

因此,如果我們可以提供cFun()的源代碼並使用Matlab Coderfun()轉換為mex ,我們將從Matlab中矩陣運算的便利性和C中的某些運算的性能,甚至OpenCL中獲益。

但這可能嗎?

謝謝!

首先:您可以使用coder.extrinsic從生成的C代碼或生成的MEX文件中coder.extrinsic 如果由於某種原因,您有一個沒有需要調用的源代碼的現有MEX文件,則可以采用與任何其他MATLAB命令相同的方式執行此操作。

其次:如果你想從你生成的C代碼或生成的MEX文件調用一些現有的C源代碼,你可以通過調用coder.cevalcoder.ceval

我不認為你不能用OpenCL代碼做到這一點,盡管如果你想利用GPU代碼我會認為Parallel Computing Toolbox的內置GPU功能會更方便。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM