文档

coder.extrinsic

包:编码器

声明外部函数或函数

语法

coder.extrinsic ('function_name”);

coder.extrinsic ('function_name_1”,……”,function_name_n”);

coder.extrinsic ('同步:”、“function_name”);

coder.extrinsic ('同步:”、“function_name_1”,……”,function_name_n”);

coder.extrinsic ('同步:了”、“function_name”);

coder.extrinsic ('同步:了”、“function_name_1”,……”,function_name_n”);

参数

function_name
function_name_1,……,function_name_n

声明function_namefunction_name_1通过function_name_n作为外部函数。

同步:

function_namefunction_name_1通过function_name_n

允许MATLAB之间的全局数据同步®和MEX函数调用外部函数之前和之后,function_namefunction_name_1通过function_name_n.如果只有少数外部调用修改全局数据,则通过将全局同步模式设置为,在所有外部函数调用之前和之后关闭同步在mex -函数进入和退出.使用同步:选项,仅为外部调用打开同步修改全局数据。

同步:了

在调用外部函数之前和之后,禁用MATLAB和MEX函数之间的全局数据同步function_namefunction_name_1通过function_name_n.如果大多数外部调用修改全局数据,但少数不修改全局数据,则可以使用同步:了选项,以关闭外部调用的同步修改全局数据。

描述

coder.extrinsic声明外部函数。在模拟过程中,代码生成器为外部函数的调用生成代码,但不生成函数的内部代码。因此,仿真只能在安装MATLAB软件的平台上运行。在独立代码生成过程中,MATLAB试图确定外部函数是否影响调用它的函数的输出——例如返回mxArrays到输出变量。假设输出没有变化,MATLAB继续进行代码生成,但从生成的代码中排除外部函数。否则,就会发生编译错误。

你不能使用coder.ceval在外部声明的函数上使用coder.extrinsic

coder.extrinsic在代码生成之外被忽略。

限制

  • 外部函数调用有一些开销,可能会影响性能。在外部函数调用中传递的输入数据必须提供给MATLAB,这需要对数据进行复制。如果函数有任何输出数据,则必须将该数据传输回MEX函数环境,这也需要一个副本。

提示

  • 代码生成器检测对许多常见可视化函数的调用,例如情节,disp,数字.软件将这些函数视为外部函数,但您不必使用coder.extrinsic函数。

  • 使用coder.screener函数来检测哪些函数必须声明为外部函数。此函数打开代码生成准备工具,用于检测MATLAB代码中的代码生成问题。

例子

下面的代码声明MATLAB函数补丁在MATLAB局部函数中作为外部的create_plot

function c = pythagoras(a,b,color) %#codegen %计算直角三角形的斜边%,并将该三角形显示为补丁对象。C =√(a^2 + b^2);Create_plot (a, b, color);function create_plot(a, b, color) %X = [0;a;a];Y = [0;0;b];Patch (x, y, color);轴(“平等”);

通过声明补丁作为外部因素,您指示代码生成器不要编译或生成用于的代码补丁.相反,代码生成器进行分派补丁到MATLAB中执行。

在R2011a中引入

这个话题有用吗?