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 函数之间的常量全局数据的一致性。
coder.extrinsic(
禁止在调用外部函数 '-sync:off'
, function1, ... ,functionN)function1
一直到 functionN
之前和之后,在 MATLAB 执行和生成的代码执行之间同步全局数据。如果大多数外部调用都使用或修改全局数据,但有几个不修改,则可以使用 '-sync:off'
选项关闭不修改全局数据的外部调用的同步。
如果使用 MATLAB Coder 生成 MEX 函数,则 '-sync:off'
选项禁止在调用外部函数后验证 MATLAB 和 MEX 函数之间的常量全局数据的一致性。
示例
输入参数
限制
外部函数调用有一些开销可能会影响性能。在外部函数调用中传递的输入数据必须提供给 MATLAB,它需要制作数据副本。如果该函数具有任何输出数据,这些数据必须传输回 MEX 函数环境,它也需要副本。
代码生成器不支持使用
coder.extrinsic
来调用位于私有文件夹中的函数。代码生成器不支持使用
coder.extrinsic
来调用局部函数。
提示
代码生成器自动将许多常见的 MATLAB 可视化函数(例如
plot
、disp
和figure
)视为外部函数。您不必使用coder.extrinsic
将它们显式声明为外部函数。使用
coder.screener
函数可以检测哪些函数必须声明为外部函数。此函数运行代码生成就绪工具,它会筛查 MATLAB 代码中是否存在代码生成不支持的功能和函数。
扩展功能
版本历史记录
在 R2011a 中推出