coder.extrinsic
将函数声明为外部函数,并在 MATLAB 中执行它
语法
说明
coder.extrinsic(
将 function
)function
声明为外部函数。代码生成器不为外部函数体生成代码,而是使用 MATLAB® 引擎来执行调用。在执行期间,仅当 MATLAB 引擎可用时,此功能才可用。MATLAB 引擎可用的情形示例包括 MEX 函数的执行、Simulink® 仿真或代码生成时的函数调用(也称为编译时)。
在独立代码生成过程中,代码生成器会尝试确定外部函数是否只具有副作用(例如,通过显示绘图),或它是否会影响调用时所在函数的输出(例如,通过将值返回到输出变量)。如果输出没有改变,代码生成器会继续执行代码生成,但会从生成的代码中排除外部函数。否则,代码生成器会产生编译错误。
对于您使用 coder.extrinsic
声明为外部函数的函数,不能使用 coder.ceval
。此外,在代码生成期间外,系统会忽略 coder.extrinsic
指令。
注意
代码生成器自动将许多常见的 MATLAB 可视化函数(例如 plot
、disp
和 figure
)视为外部函数。您不必使用 coder.extrinsic
将它们显式声明为外部函数。
coder.extrinsic(function1, ... ,functionN)
通过 functionN
将 function1
声明为外部函数。
coder.extrinsic(
允许在调用外部函数 '-sync:on'
, function1, ... ,functionN)function1
一直到 functionN
之前和之后,在 MATLAB 执行和生成的代码执行或 Simulink 仿真之间同步全局数据。如果只有几个外部调用使用或修改全局数据,可通过将全局同步模式设置为 At MEX-function entry and exit
来关闭所有外部函数调用前后的同步过程。然后再使用 '-sync:on'
选项只为确实修改全局数据的外部调用打开同步功能。
如果使用 MATLAB Coder™ 生成 MEX 函数,则 '-sync:on'
选项允许在调用外部函数后验证 MATLAB 和 MEX 函数之间的常量全局数据的一致性。
请参阅Generate Code for Global Data (MATLAB Coder)。
coder.extrinsic(
禁止在调用外部函数 '-sync:off'
, function1, ... ,functionN)function1
一直到 functionN
之前和之后,在 MATLAB 执行和生成的代码执行之间同步全局数据。如果大多数外部调用都使用或修改全局数据,但有几个不修改,则可以使用 '-sync:off'
选项关闭不修改全局数据的外部调用的同步。
如果使用 MATLAB Coder 生成 MEX 函数,则 '-sync:off'
选项禁止在调用外部函数后验证 MATLAB 和 MEX 函数之间的常量全局数据的一致性。
请参阅Generate Code for Global Data (MATLAB Coder)。
示例
输入参数
限制
外部函数调用有一些开销可能会影响性能。在外部函数调用中传递的输入数据必须提供给 MATLAB,它需要制作数据副本。如果该函数具有任何输出数据,这些数据必须传输回 MEX 函数环境,它也需要副本。
代码生成器不支持使用
coder.extrinsic
来调用位于私有文件夹中的函数。代码生成器不支持使用
coder.extrinsic
来调用局部函数。
提示
代码生成器自动将许多常见的 MATLAB 可视化函数(例如
plot
、disp
和figure
)视为外部函数。您不必使用coder.extrinsic
将它们显式声明为外部函数。使用
coder.screener
函数可以检测哪些函数必须声明为外部函数。此函数运行代码生成就绪工具,它会筛查 MATLAB 代码中是否存在代码生成不支持的功能和函数。
扩展功能
版本历史记录
在 R2011a 中推出