当为生成MEX函数指定常量输入参数时,默认情况下,生成的MEX函数签名包括此参数。当您调用MEX函数时,它将检查您为常量参数提供的值是否为代码生成时指定的值。
要生成未检查常量输入值的MEX函数,或者不包含常量输入参数,请修改常量输入检查配置参数:
如果你使用MATLAB®编码器™应用:
在生成代码页面,设置构建类型来梅克斯
.
点击更多的设置.
在所有设置选项卡,设置常数输入到表中的一个值。
如果你使用codegen
在MEX配置对象中设置ConstantInputs
属性设置为表中的一个值。
常数输入(应用) | ConstantInputs (配置对象) |
描述 |
---|---|---|
|
|
该值为默认值。 当您调用MEX函数时,它将检查您为常量输入参数提供的值是否为代码生成时指定的值。 您可以使用相同的参数调用MEX函数和原始的MATLAB函数。因此,您可以对两个函数使用相同的测试文件。 检查值可以添加到MEX函数的执行时间。 |
|
|
当调用MEX函数时,它会忽略为常量输入参数提供的值。它使用代码生成时指定的值。 您可以使用相同的测试文件,而无需检查常量参数值的开销。 |
|
|
代码生成器从MEX函数签名中删除常量输入参数。调用MEX函数时,不为常量输入参数提供值。 此选项用于向后兼容。 |
控件的使用方法ConstantInputs
参数来控制MEX函数是否检查常量输入参数的值。
写一个函数myadd
返回其输入的和。
函数C = myadd(a,b) C = a + b;结束
为MEX代码生成创建配置对象。
mexcfg = coder.config (墨西哥人的);
看看常量输入检查配置参数的值,ConstantInputs
.
mexcfg。ConstantInputs
ans ='签名'
它有默认值,CheckValues
.
生成一个MEX函数myadd_mex
.指定第一个参数是双标量,第二个参数是一个常量值3.
.
codegenmyadd配置mexcfgarg游戏{1, coder.Constant (3)}
代码生成成功。
调用myadd_mex
.您必须提供输入3.
对于第二个论点。
myadd_mex(1、3)
ans = 4
修改ConstantInputs
这样,MEX函数就不会检查输入值是否与代码生成时指定的值匹配。
mexcfg。ConstantInputs =“IgnoreValues”;
生成myadd_mex
.
codegenmyadd配置mexcfgarg游戏{1, coder.Constant (3)}
代码生成成功。
调用myadd_mex
的常量输入值3.
, 例如,5
.
myadd_mex(1、5)
ans = 4
MEX函数忽略输入值5
.它使用值3.
,这是您为常量参数指定的值b
当你生成myadd_mex
.
修改ConstantInputs
以便MEX函数签名不包括常量输入参数。
mexcfg。ConstantInputs =“删除”;
生成myadd_mex
.
codegenmyadd配置mexcfgarg游戏{1, coder.Constant (3)}
代码生成成功。
调用myadd_mex
.提供的价值1
为一个
.不为常量参数提供值b
.
myadd_mex (1)
ans = 4