主要内容gydF4y2Ba

编码器。定类gydF4y2Ba

包:gydF4y2Ba编码器gydF4y2Ba
超类:gydF4y2Ba编码器。类型gydF4y2Ba

表示包含1的集合gydF4y2BaMATLABgydF4y2Ba价值gydF4y2Ba

描述gydF4y2Ba

使用一个gydF4y2Ba编码器。常数gydF4y2Ba对象定义在代码生成期间不变的值。仅与gydF4y2BacodegengydF4y2Baarg游戏gydF4y2Ba选项。不要将输入传递给生成的MEX函数。gydF4y2Ba

建设gydF4y2Ba

const_type =编码器。常数(gydF4y2BavgydF4y2Ba)gydF4y2Ba创建一个gydF4y2Ba编码器。常数gydF4y2Ba类型的值。gydF4y2BavgydF4y2Ba.gydF4y2Ba

Codegen -globals {'g',编码器。常数(gydF4y2BavgydF4y2Ba)}gydF4y2Ba创建一个常量全局变量gydF4y2BaggydF4y2Ba值为gydF4y2BavgydF4y2Ba.gydF4y2Ba

const_type =编码器。newtype(“常数”,v)gydF4y2Ba创建一个gydF4y2Ba编码器。常数gydF4y2Ba类型的值。gydF4y2BavgydF4y2Ba.gydF4y2Ba

输入参数gydF4y2Ba

vgydF4y2Ba

用于构造类型的常量值。gydF4y2Ba

属性gydF4y2Ba

价值gydF4y2Ba

这个常数的实际值。gydF4y2Ba

复制语义gydF4y2Ba

价值。要了解值类如何影响复制操作,请参见gydF4y2Ba复制对象gydF4y2Ba.gydF4y2Ba

例子gydF4y2Ba

全部折叠gydF4y2Ba

这个例子展示了如何为MATLAB生成MEX代码gydF4y2Ba®gydF4y2Ba具有恒定输入的函数。它展示了如何使用gydF4y2BaConstantInputsgydF4y2Ba配置参数,以控制MEX函数签名是否包含常量输入,以及常量输入值是否必须与编译时值匹配。gydF4y2Ba

写一个函数gydF4y2BamyaddgydF4y2Ba它返回输入的和。gydF4y2Ba

函数gydF4y2BaC = myadd(a,b) C = a + b;gydF4y2Ba结束gydF4y2Ba

为MEX代码生成创建一个配置对象。gydF4y2Ba

Mexcfg = code .config(gydF4y2Ba墨西哥人的gydF4y2Ba);gydF4y2Ba

查看常量输入检查配置参数的值。gydF4y2Ba

mexcfg。ConstantInputsgydF4y2Ba
ans = 'CheckValues'gydF4y2Ba

默认值。gydF4y2Ba

生成MEX函数gydF4y2Bamyadd_mexgydF4y2Ba.指定第一个参数为双标量,第二个参数为带值的常量gydF4y2Ba3.gydF4y2Ba.gydF4y2Ba

codegengydF4y2BamyaddgydF4y2Ba配置gydF4y2BamexcfggydF4y2Baarg游戏gydF4y2Ba{1, coder.Constant (3)}gydF4y2Ba

调用gydF4y2Bamyadd_mexgydF4y2Ba.您必须提供输入gydF4y2Ba3.gydF4y2Ba对于第二个论点。gydF4y2Ba

myadd_mex(1、3)gydF4y2Ba
Ans = 4gydF4y2Ba

修改gydF4y2BaConstantInputsgydF4y2Ba使MEX函数不检查输入值是否与代码生成时指定的值匹配。gydF4y2Ba

mexcfg。ConstantInputs =gydF4y2Ba“IgnoreValues”gydF4y2Ba;gydF4y2Ba

生成gydF4y2Bamyadd_mexgydF4y2Ba.gydF4y2Ba

codegengydF4y2BamyaddgydF4y2Ba配置gydF4y2BamexcfggydF4y2Baarg游戏gydF4y2Ba{1, coder.Constant (3)}gydF4y2Ba

调用gydF4y2Bamyadd_mexgydF4y2Ba输入值为常量,而不是gydF4y2Ba3.gydF4y2Ba例如,gydF4y2Ba5gydF4y2Ba.gydF4y2Ba

myadd_mex(1、5)gydF4y2Ba
Ans = 4gydF4y2Ba

MEX函数忽略输入值gydF4y2Ba5gydF4y2Ba.它使用的值gydF4y2Ba3.gydF4y2Ba,这是您为常量实参指定的值gydF4y2BabgydF4y2Ba当你生成gydF4y2Bamyadd_mexgydF4y2Ba.gydF4y2Ba

修改gydF4y2BaConstantInputsgydF4y2Ba使MEX函数签名不包括常量输入参数。gydF4y2Ba

mexcfg。ConstantInputs =gydF4y2Ba“删除”gydF4y2Ba;gydF4y2Ba

生成gydF4y2Bamyadd_mexgydF4y2Ba.gydF4y2Ba

codegengydF4y2BamyaddgydF4y2Ba配置gydF4y2BamexcfggydF4y2Baarg游戏gydF4y2Ba{1, coder.Constant (3)}gydF4y2Ba

调用gydF4y2Bamyadd_mexgydF4y2Ba.提供价值gydF4y2Ba1gydF4y2Ba为gydF4y2Ba一个gydF4y2Ba.不为常量参数提供值gydF4y2BabgydF4y2Ba.gydF4y2Ba

myadd_mex (1)gydF4y2Ba
Ans = 4gydF4y2Ba

这个例子展示了如何为一个函数生成C代码,该函数专门用于输入具有常量值的情况。gydF4y2Ba

写一个函数gydF4y2Ba身份gydF4y2Ba它将输入复制到输出。gydF4y2Ba

函数gydF4y2BaY =恒等式(u)gydF4y2Ba% # codegengydF4y2BaY = u;gydF4y2Ba

为C代码生成创建一个代码配置对象。gydF4y2Ba

CFG = code .config(gydF4y2Ba“自由”gydF4y2Ba);gydF4y2Ba

生成C代码gydF4y2Ba身份gydF4y2Ba输入是恒定的gydF4y2Ba42gydF4y2Ba并生成一个报告。gydF4y2Ba

codegengydF4y2Ba身份gydF4y2Ba配置gydF4y2BacfggydF4y2Baarg游戏gydF4y2Ba{coder.Constant (42)}gydF4y2Ba报告gydF4y2Ba

在报告中,关于gydF4y2BaC代码gydF4y2Ba选项卡上,单击gydF4y2Baidentity.cgydF4y2Ba.gydF4y2Ba

的函数签名gydF4y2Ba身份gydF4y2Ba是gydF4y2Ba

双重身份(空白)gydF4y2Ba

此示例演示如何在编译时为全局变量指定常量值。gydF4y2Ba

写一个函数gydF4y2BamyfunctiongydF4y2Ba它返回全局常数的值gydF4y2BaggydF4y2Ba.gydF4y2Ba

函数gydF4y2BaY = myfunction()gydF4y2Ba% # codegengydF4y2Ba全球gydF4y2Bag;Y = g;gydF4y2Ba结束gydF4y2Ba

为MEX代码生成创建一个配置对象。gydF4y2Ba

CFG = code .config(gydF4y2Ba墨西哥人的gydF4y2Ba);gydF4y2Ba

定义单元格数组gydF4y2Ba全局变量gydF4y2Ba声明了gydF4y2BaggydF4y2Ba是否有值的常量全局变量gydF4y2Ba5gydF4y2Ba.gydF4y2Ba

全局变量= {gydF4y2Ba‘g’gydF4y2Ba, coder.Constant (5)};gydF4y2Ba

生成MEX函数gydF4y2BamyfunctiongydF4y2Ba使用gydF4y2Ba全局变量gydF4y2Ba选项指定全局数据。gydF4y2Ba

codegengydF4y2Ba配置gydF4y2BacfggydF4y2Ba全局变量gydF4y2Ba全局变量gydF4y2BamyfunctiongydF4y2Ba

运行生成的MEX函数。gydF4y2Ba

myfunction_mexgydF4y2Ba
Ans = 5gydF4y2Ba

限制gydF4y2Ba

  • 你不能使用gydF4y2Ba编码器。常数gydF4y2Ba在稀疏矩阵上,或在包含稀疏矩阵的结构、单元格数组或类上。gydF4y2Ba

在R2011a中介绍gydF4y2Ba