coder.extrinsic
将函数声明为外部函数,并在 MATLAB 中执行它
语法
说明
coder.extrinsic(
将 function
)function
声明为外部函数。代码生成器不为外部函数体生成代码,而是使用 MATLAB® 引擎来执行调用。在执行期间,仅当 MATLAB 引擎可用时,此功能才可用。MATLAB 引擎可用的情形示例包括 MEX 函数的执行、Simulink® 仿真和代码生成时的函数调用(也称为编译时)。
在生成独立代码的过程中,代码生成器会尝试确定外部函数是否影响调用时所在的函数。如果外部函数不影响主调函数(例如,外部函数显示绘图),代码生成器会继续生成代码,但从生成的代码中排除外部函数。如果外部函数影响主调函数(例如,外部函数向主调函数返回值),代码生成器将产生编译错误。
在代码生成期间外,MATLAB 会忽略 coder.extrinsic
指令。
注意
外部函数的运行时输出是 mxArray
,也称为 MATLAB 数组。对 mxArray
有效的操作只有下列几个:将其存储在变量中,将其传递给另一个外部函数,或将其返回到 MATLAB。要对 mxArray
值执行任何其他操作,例如在代码的表达式中使用它,您必须将 mxArray
转换为已知类型,方法是将 mxArray
赋给一个变量,该变量的类型已由之前的赋值定义。请参阅使用 mxArray。
coder.extrinsic(function1,...,functionN)
通过 functionN
将 function1
声明为外部函数。
coder.extrinsic(
用于控制外部函数调用前后您的 MATLAB 代码与生成的 MEX 文件之间的全局数据同步。默认情况下,代码生成器在外部函数调用前后同步全局变量,以最大程度地实现 MATLAB 代码和 MEX 函数之间的一致性。要了解如何以及何时更改此默认行为,请参阅Generate Code for Global Data。syn
, function1, ... ,functionN)
示例
输入参数
限制
对于您使用
coder.ceval
声明为外部函数的函数,不能使用coder.extrinsic
。外部函数调用会影响性能,因为代码生成器会复制您传递给外部函数的数据,并将数据发送给 MATLAB 来执行。相反,MATLAB 会复制任何输出数据,以便传输回 MEX 函数环境中。
代码生成器不支持使用
coder.extrinsic
来调用位于私有文件夹中的函数。代码生成器不支持使用
coder.extrinsic
来调用局部函数。如果传递给外部函数的值或从外部函数返回的值是以下项或包含以下项,则代码生成不支持这些值:
句柄类
函数句柄
不透明值(请参阅
coder.opaque
。)
提示
代码生成器自动将许多常见的 MATLAB 可视化函数(例如
plot
、disp
和figure
)视为外部函数。您不必使用coder.extrinsic
将这些函数显式声明为外部函数。使用
coder.screener
函数可以检测哪些函数必须声明为外部函数。此函数运行代码生成就绪工具,它会筛查 MATLAB 代码中是否存在代码生成不支持的功能和函数。请参阅Check Code by Using the Code Generation Readiness Tool。
扩展功能
版本历史记录
在 R2011a 中推出