coder.Constantclass

包:gydF4y2Ba编码器gydF4y2Ba
超类:gydF4y2Bacoder.TypegydF4y2Ba

代表组包含一个gydF4y2BaMATLABgydF4y2Ba值gydF4y2Ba

描述gydF4y2Ba

使用一个gydF4y2Bacoder.ConstantgydF4y2Ba对象来定义在代码生成期间为常量的值。仅与gydF4y2BacodegengydF4y2Baarg游戏gydF4y2Ba选项。不要将其作为输入传递给生成的MEX函数。gydF4y2Ba

建设gydF4y2Ba

const_type = coder.Constant (gydF4y2BavgydF4y2Ba)gydF4y2Ba创建一个gydF4y2Bacoder.ConstantgydF4y2Ba从值键入gydF4y2BavgydF4y2Ba。gydF4y2Ba

codegen -globals {'g', code . constant (gydF4y2BavgydF4y2Ba)}gydF4y2Ba创建一个常量全局变量gydF4y2BaggydF4y2Ba与价值gydF4y2BavgydF4y2Ba。gydF4y2Ba

const_type =编码器。newtype(“常数”,v)gydF4y2Ba创建一个gydF4y2Bacoder.ConstantgydF4y2Ba从值键入gydF4y2BavgydF4y2Ba。gydF4y2Ba

输入参数gydF4y2Ba

vgydF4y2Ba

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

属性gydF4y2Ba

值gydF4y2Ba

常数的实际值。gydF4y2Ba

复制语义gydF4y2Ba

值。要了解值类如何影响复制操作,请参阅gydF4y2Ba复制对象gydF4y2Ba(MATLAB)。gydF4y2Ba

例子gydF4y2Ba

全部折叠gydF4y2Ba

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

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

功能gydF4y2Bac = myadd(a,b) c = a + b;gydF4y2Ba结束gydF4y2Ba

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

mexcfg = coder.config (gydF4y2Ba墨西哥人的gydF4y2Ba);gydF4y2Ba

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

mexcfg.ConstantInputsgydF4y2Ba
ANS = '校验值'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=“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

生成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 = coder.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 = coder.config (gydF4y2Ba墨西哥人的gydF4y2Ba);gydF4y2Ba

定义单元格数组gydF4y2Ba全局变量gydF4y2Ba声明,gydF4y2BaggydF4y2Ba是一个带有值的常量全局变量吗gydF4y2Ba5gydF4y2Ba。gydF4y2Ba

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

生成一个MEX函数gydF4y2BamyfunctiongydF4y2Ba使用gydF4y2Ba-globalsgydF4y2Ba选项指定全局数据。gydF4y2Ba

codegengydF4y2Ba配置gydF4y2BacfggydF4y2Ba-globalsgydF4y2Ba全局变量gydF4y2BamyfunctiongydF4y2Ba

运行生成的MEX函数。gydF4y2Ba

myfunction_mexgydF4y2Ba
ans = 5gydF4y2Ba

限制gydF4y2Ba

  • 你不能使用gydF4y2Bacoder.ConstantgydF4y2Ba在稀疏矩阵上,或在包含稀疏矩阵的结构、单元数组或类上。gydF4y2Ba

介绍了R2011agydF4y2Ba