主要内容

万博1manbetx仿真软件。LookupTable类

包:万博1manbetx
超类:

存储和共享查找表和断点数据,配置ASAP2和AUTOSAR代码生成的数据

描述

一个对象万博1manbetx仿真软件。LookupTable类存储查找表和断点数据。可以在查找表块中使用该数据,例如n-D查找表块。通过该对象,您可以为表和断点集指定数据类型和代码生成设置。

当将所有表和断点集数据存储在单个万博1manbetx仿真软件。LookupTable对象,则所有数据都出现在生成的代码中的单个结构中。要配置STD_AXIS代码生成以进行校准,请使用此技术。

要在多个查找表之间共享断点集(例如COM_AXIS代码生成),请使用万博1manbetx仿真软件。断点对象Prelookup块。使用万博1manbetx仿真软件。LookupTable对象使用预查找的插值块。然后,配置查找表对象以引用断点对象。有关更多信息,请参见包用于查找表的共享断点和表数据

子类化万博1manbetx仿真软件。LookupTable并从这个基类继承,在类定义文件的第一行键入此语法,其中myLookuptable是您的新类的名称:

classdef myLookuptable < 万博1manbetxSimulink。LookupTable

有关子类化的示例,请参见定义数据类

如果您向子类添加属性,您可以通过在MATLAB中显示子类对象来查看它们®命令行。在属性对话框中,这些属性显示在一个新选项卡中。

建设

LUTObj = 万博1manbetxSimulink.;LookupTable返回一个万博1manbetx仿真软件。LookupTable对象LUTObj使用默认属性值。

要创建一个万博1manbetx仿真软件。LookupTable对象,使用模型资源管理器,使用按钮在工具栏上。对象的默认名称为对象

属性对话框

设置断点规范显式的(默认)显示属性对话框的此视图。

对话框的底部包含表和断点数据值。有关此表格区域的更多信息,请参见视图模型。万博1manbetxLookupTable对象Data Using the Property Dialog Box Tabular Interface.该表的内容等同于价值属性时可见断点规范属性设置为甚至间距参考

表维数

查找表的维度数。指定一个到的整数值30.(包容)。例如,要表示三维查找表,请指定整数3.

表格

表数据的信息。你可以配置这些特征:

价值

表数据。指定至少具有两个元素的数值向量或多维数组。

价值时,对话框底部可见的表格界面的内容与表数据相同断点规范属性设置为显式的.有关此表格区域的更多信息,请参见视图模型。万博1manbetxLookupTable对象Data Using the Property Dialog Box Tabular Interface

请注意

此属性仅在断点规范设置为甚至间距参考

还可以使用带有数学运算符的表达式,例如sin (1:0.5:30)只要表达式返回数值向量或多维数组。当你点击应用好吧,对象执行表达式并使用结果设置此属性的值。

当你设置数据类型汽车,设置价值,使用类型化表达式,例如单([1 2 3])或使用fi(定点设计师)构造函数来嵌入fi对象。

当指定具有三个或更多维度的表数据时,价值控件的调用将数据显示为表达式重塑函数。类的第一个参数可编辑数据中的值重塑调用,该函数包含序列化向量中的所有值。在沿维度添加或删除元素时,还必须更正表示修改后维度长度的参数。

您可以在查找表块中使用更直观的界面来编辑这些数据。看到从MATLAB中导入查找表数据

数据类型

表数据的数据类型。默认设置为汽车,这意味着表数据从中指定的值获取数据类型价值.如果使用无类型表达式,例如[1 2 3]设置价值,表数据使用数据类型.如果指定类型化表达式,例如单([1 2 3])或者一个fi对象,则表数据使用表达式或对象指定的数据类型。还支持枚举数据类型。万博1manbetx

可以显式指定整数数据类型、半数据类型、浮点数据类型、定点数据类型或数据类型表达式,例如的名称万博1manbetx仿真软件。AliasType对象。

有关Simulink中数据类型的更多信息万博1manbetx®,请参阅Simulink支持的万博1manbetx数据类型万博1manbetx.确定如何控制表和断点数据的数据类型万博1manbetx仿真软件。LookupTable而且万博1manbetx仿真软件。断点对象,看到查找表对象的控件数据类型(万博1manbetx仿真软件编码器)

查找表数据的维度长度。

若要使用符号维度,请指定字符向量。看到在生成的代码中实现数组大小的维度变量(嵌入式编码)

最小值

表数据中元素的最小值。缺省值为空,[].您可以指定一个数值,真实的值。

有关Simulink如何使用此属性的更多信息,请参见万博1manbetx指定块参数的最小值和最大值

马克斯

表数据中元素的最大值。缺省值为空,[].您可以指定一个数值,真实的值。

有关Simulink如何使用此属性的更多信息,请参见万博1manbetx指定块参数的最小值和最大值

存储Int型最小值

万博1manbetx仿真软件。LookupTable具有定点数据类型(表数据中元素的最小值,指定为存储整数值)的对象。该值来源于真实世界的值最小值.此属性仅在属性对话框中可用。

最大存储Int

万博1manbetx仿真软件。LookupTable具有定点数据类型的对象,即表数据中元素的最大值,指定为存储的整数值。该值来源于真实世界的值马克斯.此属性仅在属性对话框中可用。

单位

查找表中元素的物理单位。可以指定诸如摄氏度.看到Simulink模型中的单元规范万博1manbetx

字段名

生成代码中结构字段的名称。属性时,此字段存储表数据万博1manbetx仿真软件。LookupTable对象将作为结构出现在生成的代码中。默认值为表格.要更改字段名,请指定text。

描述

查找表的描述。可以指定诸如此查找表描述泵的动作

断点

断点集信息。每一行是一个断点集。中指定整数值可配置其他断点集表维数盒子。

对于断点集,可以配置以下特征:

规范

断点集信息的源,指定为明确的价值观(默认),参考,或甚至间距

  • 中存储所有表和断点集数据万博1manbetx仿真软件。LookupTable对象,设置规范明确的价值观

    万博1manbetx仿真软件。LookupTable对象作为单个结构变量出现在生成的代码中。

  • 将表数据存储在万博1manbetx仿真软件。LookupTable对象,并将断点集数据存储在中万博1manbetx仿真软件。断点对象,设置规范参考

    万博1manbetx仿真软件。LookupTable对象作为包含表数据的单独数组变量出现在生成的代码中。每一个万博1manbetx仿真软件。断点对象显示为包含断点集数据的单独数组或结构变量。

  • 中存储表数据和间隔均匀的断点万博1manbetx仿真软件。LookupTable对象,设置规范甚至间距.使用第一点而且间距参数来生成一组均匀间隔的断点。

请注意

规范设置为明确的价值观甚至间距,可以在查找表对象生成的结构中更改可调大小、断点和表项的顺序。

万博1manbetx支持可调大小

规范,以支持在生成的代码中调优表的有效大小。在代码中,对应于对象的结构对于每个断点向量都有一个额外的字段。每个额外字段存储相应断点向量的长度。您可以更改每个字段的值来调整表的有效大小。

此属性仅在设置后才会显示规范明确的价值观甚至间距

请注意

如果将断点数据存储在万博1manbetx仿真软件。断点对象。规范参考,以在生成的代码中启用表大小的调优万博1manbetx支持可调大小各自的属性万博1manbetx仿真软件。断点对象。

价值

断点集的数据。指定至少具有两个元素的数字向量。

请注意

此属性仅在断点规范设置为甚至间距参考.的价值时,断点集数据与对话框底部可见的表格界面的内容相同断点规范属性设置为显式的.有关此表格区域的更多信息,请参见视图模型。万博1manbetxLookupTable对象Data Using the Property Dialog Box Tabular Interface

还可以使用带有数学运算符的表达式,例如sin (1:0.5:30)只要表达式返回一个数值向量。当你点击应用好吧,对象执行表达式并使用结果设置此属性的值。

当你设置数据类型汽车,设置价值,使用类型化表达式,例如单([1 2 3])或使用fi(定点设计师)构造函数来嵌入fi对象。

您可以在查找表块中使用更直观的界面来编辑这些数据。看到从MATLAB中导入查找表数据

数据类型

断点集的数据类型。默认设置为汽车,这意味着断点集从中指定的值获取数据类型价值.如果使用无类型表达式,例如[1 2 3]设置价值,断点数据使用数据类型.如果指定类型化表达式,例如单([1 2 3])或者一个fi对象时,断点数据使用表达式或对象指定的数据类型。

可以显式指定整数数据类型、浮点数据类型、定点数据类型或数据类型表达式,例如的名称万博1manbetx仿真软件。AliasType对象。

有关Simulink中数据类型的更多信息,请参见万博1manbetxSimulink支持的万博1manbetx数据类型万博1manbetx.确定如何控制表和断点数据的数据类型万博1manbetx仿真软件。LookupTable而且万博1manbetx仿真软件。断点对象,看到查找表对象的控件数据类型(万博1manbetx仿真软件编码器)

断点集的维度长度。

若要使用符号维度,请指定字符向量。看到在生成的代码中实现数组大小的维度变量(嵌入式编码)

最小值

断点集中元素的最小值。缺省值为空,[].您可以指定一个数值,真实的值。

有关Simulink如何使用此属性的更多信息,请参见万博1manbetx指定块参数的最小值和最大值

马克斯

断点集中元素的最大值。缺省值为空,[].您可以指定一个数值,真实的值。

有关Simulink如何使用此属性的更多信息,请参见万博1manbetx指定块参数的最小值和最大值

单位

断点集中元素的物理单位。可以指定诸如degF.看到Simulink模型中的单元规范万博1manbetx

字段名

生成代码中结构字段的名称。此字段存储断点集数据。默认值为BP1对于第一个断点集和BP2第二组。要更改字段名,请指定text。

可调的大小名称

生成代码中结构字段的名称。这个字段存储断点集的长度(元素的数量),生成的代码算法使用它来确定表的大小。要在代码执行期间调优表的有效大小,请在内存中更改此结构字段的值。默认名称为N1对于第一个断点集和N2第二组。要更改字段名,请指定text。

此列仅在选择时出现万博1manbetx支持可调大小

描述

断点集的说明。可以指定诸如这个断点集表示压力输入

第一点

均匀间隔的断点数据中的第一个点。该参数在以下情况下有效规范设置为甚至间距

间距

均匀间隔的断点数据中点之间的间隔。该参数在以下情况下有效规范设置为甚至间距

的名字

机构名称万博1manbetx仿真软件。断点对象,该对象存储此断点集的信息。

此列仅在设置后才显示规范参考

第一个点名称

机构名称万博1manbetx仿真软件。断点对象,该对象存储第一个点的信息。该参数在以下情况下有效规范设置为甚至间距

间距的名字

机构名称万博1manbetx仿真软件。断点对象,该对象存储间距信息。该参数在以下情况下有效规范设置为甚至间距

数据定义:存储类

结构变量的存储类(如果您设置规范明确的价值观甚至间距)或数组变量(参考)。变量存储表数据,如果变量是结构,则存储断点集数据。默认设置为汽车

有关存储类的更多信息,请参见模型接口元素的C代码生成配置(万博1manbetx仿真软件编码器)

如果你有嵌入式编码器®,您可以选择自定义存储类。有关自定义存储类的信息,请参见使用结构存储类将参数数据组织到结构中(嵌入式编码)

数据定义:标识符

结构变量的可选名称(如果您设置规范明确的价值观甚至间距)或数组变量(参考)。默认值为空,在这种情况下,生成的代码使用万博1manbetx仿真软件。LookupTable对象作为结构或数组变量的名称。要设置标识符,请指定文本。

若要启用此属性,请设置数据定义:存储类而不是汽车

数据定义:对齐

生成代码中的数据对齐边界。分配给结构或数组变量的数据的起始内存地址是指定值的倍数。默认值为-1,这允许代码生成器根据使用情况确定最佳对齐方式。

指定一个2的幂且不超过128的正整数。有关使用数据对齐进行代码替换的更多信息,请参见代码替换的数据对齐(嵌入式编码)

结构类型定义:名称

结构变量在生成的代码中使用的结构类型的名称。缺省值为空。指定文本。

此属性仅在设置后才会显示规范明确的价值观甚至间距

结构类型定义:数据作用域

结构类型定义的范围(从自定义代码导入或从生成的代码导出)。默认值为汽车.当您选择汽车

  • 中未指定值结构类型定义:头文件框中,生成的代码将结构类型定义导出到文件中模型_types.h模型是模型的名称。

  • 中指定的值结构类型定义:头文件盒子,如myHdr.h,生成的代码从中导入结构类型定义myHdr.h

显式指定数据范围:

  • 若要将结构类型定义从自定义代码导入到生成的代码中,请选择进口

  • 若要从生成的代码导出结构类型定义,请选择出口

中未指定值结构类型定义:头文件框中,生成的代码从其中导入或导出类型定义StructName.hStructName是使用属性指定的名称吗结构类型定义:名称

此属性仅在设置后才会显示规范明确的价值观甚至间距

结构类型定义:头文件

包含结构类型定义的头文件的名称。您可以从创建的头文件导入定义,或者将定义导出到生成的头文件中。若要控制结构类型的范围,请调整结构类型定义:数据作用域财产。

此属性仅在设置后才会显示规范明确的价值观甚至间距

表和断点值编辑区

表和断点数据的信息。您可以在相关的文本框中输入MATLAB表达式,也可以直接在附带的表中添加数据。选择所需的数据类型:

  • 表格-表数据。指定至少具有两个元素的数值向量或多维数组。

    还可以使用带有数学运算符的表达式,例如sin (1:0.5:30)只要表达式返回数值向量或多维数组。当你按下输入,对象执行表达式并使用结果设置此属性的值。

    指定具有三个或更多维度的表数据时,表将数据显示为表达式,其中包含对重塑函数。类的第一个参数可编辑数据中的值重塑调用,该函数包含序列化向量中的所有值。在沿维度添加或删除元素时,还必须更正表示修改后维度长度的参数。

    您可以在查找表块中使用更直观的界面编辑此数据。看到从MATLAB中导入查找表数据

  • 英国石油公司N—断点集数据。

    指定至少具有两个元素的数字向量。

    还可以使用带有数学运算符的表达式,例如sin (1:0.5:30)只要表达式返回一个数值向量。当你按下输入,对象执行表达式并使用结果设置此属性的值。

    您可以在查找表块中使用更直观的界面来编辑这些数据。看到从MATLAB中导入查找表数据

在表中输入或操作数据既简单又直观。就像微软®Excel®电子表格,您可以使用表的操作,如:

  • 选择表元素

  • 使用标准的快捷键,例如:

    • 复制- - - - - -Ctrl + C

    • 粘贴,Ctrl + V

    • 取消- - - - - -Ctrl + Z

    • 删除

    • 重做,Shift + Ctrl + Z

属性

全部展开

的向量指定的断点集信息万博1manbetxSimulink.lookuptable.Breakpoint对象,字符向量的单元格数组,或的向量万博1manbetxSimulink.lookuptable.Evenspacing对象。

如果你用向量万博1manbetxSimulink.lookuptable.Breakpoint对象,每个对象表示一个断点集。用…的向量万博1manbetxSimulink.lookuptable.Breakpoint对象,设置属性BreakpointsSpecification“显式值”

如果使用字符向量的单元格数组,则每个字符向量表示的名称万博1manbetx仿真软件。断点对象。若要使用字符向量的单元格数组,请设置属性BreakpointsSpecification“参考”

如果你用向量万博1manbetxSimulink.lookuptable.Evenspacing对象,每个对象表示一个断点集。用…的向量万博1manbetxSimulink.lookuptable.Evenspacing对象,设置属性BreakpointsSpecification“即使间距”

断点集信息的源,指定为“显式值”(默认),“即使间距”,或“参考”.看到断点>规范参数。

数据类型:字符

结构变量的代码生成设置(如果设置BreakpointsSpecification“显式值”“即使间距”)或数组变量(“参考”)存储查找表和断点集,指定为万博1manbetx仿真软件。CoderInfo对象。可以通过使用这个嵌入对象指定存储类或自定义存储类。看到万博1manbetx仿真软件。CoderInfo

为结构变量在生成的代码中使用的结构类型设置万博1manbetxSimulink.lookuptable.StructTypeInfo对象。

如果你设置BreakpointsSpecification“参考”,万博1manbetx仿真软件。LookupTable对象不会作为结构出现在生成的代码中。代码生成器忽略此属性。

选项生成支持表有效大小的可调性的代码,指定为真正的.看到万博1manbetx支持可调大小参数。

数据类型:逻辑

表数据的信息,指定为万博1manbetxSimulink.lookuptable.Table对象。

复制语义

句柄。要了解句柄类如何影响复制操作,请参见复制对象

例子

表示一维查找表

  1. 创建一个万博1manbetx仿真软件。LookupTable对象命名LUTObj

    LUTObj = 万博1manbetxSimulink.LookupTable;

  2. 指定表数据。

    LUTObj.Table.Value = [1.1 2.2 3.3 4.4 5.5];

  3. 指定断点集数据。

    LUTObj.Breakpoints(1)。值= [-2 -1 0 1 2];

  4. 在生成的代码中为结构类型指定一个名称。

    LUTObj.StructTypeInfo.Name =“myLUTStruct”

你可以用LUTObj在一个一维查找表对话框。在块中,设置数据规范查找表对象而且的名字LUTObj

要查看数据,请使用中描述的属性对话框视图模型。万博1manbetxLookupTable对象Data Using the Property Dialog Box Tabular Interface

表示一个二维查找表

  1. 创建一个万博1manbetx仿真软件。LookupTable对象命名LUTObj

    LUTObj = 万博1manbetxSimulink.LookupTable;

  2. 指定表数据。

    LUTObj.Table.Value = [1.1 2.2 3.3 4.4 5.5;6.6 7.7 8.8 9.9 10.1];

  3. 指定断点集数据。在断点属性,使用向量索引2设置第二个断点集中的值。

    LUTObj.Breakpoints(1)。值= [-1 1];LUTObj.Breakpoints(2)。值= [-2 -1 0 1 2];

    LUTObj创建一个万博1manbetxSimulink.lookuptable.Breakpoint对象的值中的第二个向量元素断点财产。除了价值属性时,新对象具有默认属性值。

  4. 在生成的代码中为结构类型指定一个名称。

    LUTObj.StructTypeInfo.Name =“myLUTStruct”

你可以用LUTObj在一个二维查找表对话框。

要查看数据,请使用中描述的属性对话框视图模型。万博1manbetxLookupTable对象Data Using the Property Dialog Box Tabular Interface

从1开始平均间隔每一秒值

若要均匀地分隔从1开始的每一秒值,请使用Breakpoint对象。

  1. 创建一个万博1manbetx仿真软件。LookupTable对象命名LUTObj

    LUTObj 万博1manbetx=仿真软件。LookupTable
    [1×1 Simulink.lookuptable. LUTObj = LookupTable . 万博1manbetxproperties:表格] BreakpointsSpecification: 'Explicit values' Breakpoints: [1×1 Simulink.lookuptable.Breakpoint] SupportTunableSize: 0 CoderInfo: [1×1 Simulink.CoderInfo] StructTypeInfo: [1×1 Simulink.lookuptable.StructTypeInfo]
  2. 将断点属性设置为间距均匀。

    LUTObj。BreakpointsSpecification =“即使间距”
    [1×1 Simulink.lookuptable. LUTObj = LookupTable . 万博1manbetxproperties:表格] BreakpointsSpecification: 'Even spacing' Breakpoints: [1×1 Simulink.lookuptable.Evenspacing] SupportTunableSize: 0 CoderInfo: [1×1 Simulink.CoderInfo] StructTypeInfo: [1×1 Simulink.lookuptable.StructTypeInfo]
  3. 获取断点的属性。

    LUTObj.Breakpoints (1)
    ans = Evenspacing with properties: FirstPoint: 0 Spacing: 1 DataType: 'auto' Min: [] Max:[]单位:" FirstPointName: 'BPFirstPoint1' SpacingName: 'BPSpacing1' TunableSizeName: 'N1' Description: "
  4. 要设置第一个点属性,请使用Breakpoint对象FirstPoint财产。

    LUTObj.Breakpoints (1) .FirstPoint = 1
  5. 若要设置空格属性,请使用Breakpoint对象。

    LUTObj.Breakpoints (1) .Spacing = 2
  6. 获取断点的属性。

    LUTObj.Breakpoints (1)
    ans = Evenspacing with properties: FirstPoint: 1 Spacing: 2 DataType: 'auto' Min: [] Max:[]单位:" FirstPointName: 'BPFirstPoint1' SpacingName: 'BPSpacing1' TunableSizeName: 'N1' Description: "

用于查找表和断点集的控制代码生成

创建一个万博1manbetx仿真软件。LookupTable对象命名LUTObj

LUTObj = 万博1manbetxSimulink.LookupTable;

指定表数据。

LUTObj.Table.Value = [1.00 2.25 3.50 4.75 6.00;7.25 8.50 9.75 11.00 12.25];

指定断点集数据。在断点属性,使用数组索引2要创建额外的万博1manbetxSimulink.lookuptable.BreakpointInfo对象,该对象表示第二个断点集。

LUTObj.Breakpoints(1)。值= [-1 1];LUTObj.Breakpoints(2)。值= [-2 -1 0 1 2];

为查找表和每个断点集指定数据类型。

LUTObj.Table.DataType =“fixdt(2) 1, 16日”;LUTObj.Breakpoints(1)。数据类型=“int16”;LUTObj.Breakpoints(2)。数据类型=“int16”

为生成代码中存储表数据和断点集的结构字段指定惟一名称。

LUTObj.Table.FieldName =“myTable”;LUTObj.Breakpoints(1)。字段名=“myBPSet1”;LUTObj.Breakpoints(2)。字段名=“myBPSet2”

通过使用存储类从生成的代码导出结构变量定义ExportedGlobal

LUTObj.CoderInfo.StorageClass =“ExportedGlobal”

在生成的代码中命名结构类型LUTStructType.将结构类型定义导出到生成的名为myLUTHdr.h

LUTObj.StructTypeInfo.Name =“LUTStructType”;LUTObj.StructTypeInfo.DataScope =“出口”;LUTObj.StructTypeInfo.HeaderFileName =“myLUTHdr.h”

在模型中的n-D查找表块中,设置数据规范查找表对象而且的名字LUTObj

load_system (“myModel_LUTObj”) set_param (“myModel_LUTObj /查找表”“DataSpecification”“查找表对象”“LookupTableObject”“LUTObj”

从模型生成代码。

slbuild (“myModel_LUTObj”
为“myModel_LUTObj”生成的代码是最新的,因为没有发现结构、参数或代码替换库的更改。成功完成代码生成:myModel_LUTObj构建总结0的1个模型构建(1个模型已经更新到最新)构建持续时间:0h 0m 2.141秒

生成的代码定义了结构类型LUTStructType在生成的头文件中myLUTHdr.h

文件= fullfile(“myModel_LUTObj_ert_rtw”“myLUTHdr.h”);rtwdemodbtype(文件,'typedef struct {'“}LUTStructType;”, 1, 1)
typedef结构{int16_T myBPSet1[2];int16_T myBPSet2 [5];int16_T myTable [10];} LUTStructType;

代码使用全局结构变量LUTObj存储表和断点集数据。表数据基于指定的定点数据类型进行伸缩。

文件= fullfile(“myModel_LUTObj_ert_rtw”“myModel_LUTObj.c”);rtwdemodbtype(文件,'LUTStructType LUTObj = {''/*变量:LUTObj', 1, 1)
LUTStructType LUTObj = {{-1, 1}, {-2, -1, 0,1,2}, {4,29, 9,34, 14,39,19,44,24,49}};/*变量:LUTObj

生成使用有条件编译的维度长度的代码

假设您的手写代码有条件地分配内存并根据指定的维度长度初始化查找表#定义宏。此示例演示如何生成使用外部表和断点数据的代码。

符号维度要求您使用基于ert的系统目标文件,这需要嵌入式Coder®。

探索外部代码

在当前文件夹中,将这些宏定义复制到名为ex_myHdr_LUT.h

#include "rtwtypes.h" #ifndef _HEADER_MYHDR_H_ #define _HEADER_MYHDR_H_ #define bp1Len 2 #define bp2Len 2 typedef struct {real_T BP1[bp1Len];real_T BP2 [bp2Len];表[bp1Len * bp2Len];} LUTObj_Type;LUTObj;# endif

将此静态初始化代码复制到名为ex_mySrc_LUT.c

#if bp1Len == 2 && bp1Len == 2 LUTObj_Type LUTObj = {{1.0, 2.0}, {3.0, 4.0}, {3.0, 2.0, 4.0, 1.0}};# endif #如果bp1Len = = 3 & & bp1Len = = 3 LUTObj_Type LUTObj = {{1.0, 2.0, 3.0}, {4.0, 5.0, 6.0}, {1.0, 6.0, 2.0, 3.0, 8.0, 9.0, 5.0, 4.0, 7.0}};# endif

要生成导入此数据的代码,请创建bp1Len而且bp2Len作为万博1manbetx仿真软件。参数对象。创建LUTObj作为一个万博1manbetx仿真软件。LookupTable对象。控件中的表和断点集数据使用参数对象指定维度长度万博1manbetx仿真软件。LookupTable对象。

创建示例模型

创建示例模型ex_LUTObj通过使用n-D查找表块。在“查找表”块对话框中,在表和断点选项卡,设置表维数2

open_system (“ex_LUTObj”

创建万博1manbetx仿真软件。LookupTable对象

在模型浏览器中模型层次结构窗格中,选择基本工作空间

在工具栏上,单击添加Si万博1manbetxmulink LookupTable按钮。一个万博1manbetx仿真软件。LookupTable对象命名对象出现在基本工作区中。

内容窗格(中间窗格),将对象重命名为LUTObj

或者,在命令提示符处创建对象:

LUTObj = 万博1manbetxSimulink.LookupTable;

配置万博1manbetx仿真软件。LookupTable对象

内容窗格中,选择新对象LUTObj.属性对话框出现在对话框窗格(右窗格)。

表维数2

表格,设置价值(3 4;2 (1)

在第一排下面断点,设置价值(1 2)

在第二排下面断点,设置价值[3 - 4].点击应用

结构类型定义,设置数据范围进口.集头文件ex_myHdr_LUT.h.集的名字LUTObj_Type

在“查找表”块对话框中,设置数据规范查找表对象.集的名字LUTObj.点击应用

或者,使用以下命令配置对象和块:

LUTObj.Breakpoints(1)。值= [1 2];LUTObj.Breakpoints(2)。Value = [3 4];LUTObj.Table.Value = [3 4;2 1];LUTObj.StructTypeInfo.DataScope =“进口”;LUTObj.StructTypeInfo.HeaderFileName =“ex_myHdr_LUT.h”;LUTObj.StructTypeInfo.Name =“LUTObj_Type”;set_param (“ex_LUTObj /查找表”“LookupTableObject”“LUTObj”) set_param (“ex_LUTObj /查找表”“DataSpecification”“查找表对象”

允许代码生成器使用万博1manbetx仿真软件。参数对象作为指定维度长度的宏。选择配置参数允许符号维度规范

set_param (“ex_LUTObj”“AllowSymbolicDim”“上”

创建万博1manbetx仿真软件。参数表示宏的对象bp1Len而且bp2Len.生成从头文件导入宏的代码ex_myHdr_LUT.h,应用存储类ImportedDefine

bp1Len = 万博1manbetxSimulink.Parameter(2);bp1Len。最小值= 2; bp1Len.Max = 3; bp1Len.DataType =“int32”;bp1Len.CoderInfo。StorageClass =“自定义”;bp1Len.CoderInfo。CustomStorageClass =“ImportedDefine”;bp1Len.CoderInfo.CustomAttributes。HeaderFile =“ex_myHdr_LUT.h”;bp2Len = 万博1manbetxSimulink.Parameter(2);bp2Len。最小值= 2; bp2Len.Max = 3; bp2Len.DataType =“int32”;bp2Len.CoderInfo。StorageClass =“自定义”;bp2Len.CoderInfo。CustomStorageClass =“ImportedDefine”;bp2Len.CoderInfo.CustomAttributes。HeaderFile =“ex_myHdr_LUT.h”

配置现有的万博1manbetx仿真软件。LookupTable对象LUTObj要使用万博1manbetx仿真软件。参数对象。使用参数对象的名称设置断点集数据和表数据的维度长度。

LUTObj.Breakpoints(1)。尺寸=“[1 bp1Len]”;LUTObj.Breakpoints(2)。尺寸=“[1 bp2Len]”;LUTObj.Table.Dimensions =“[bp1Len bp2Len]

配置LUTObj通过应用存储类导入数据ImportFromFile.导入你的定义LUTObj,添加文件名ex_mySrc_LUT.c模型配置参数配置参数>代码生成>自定义代码>附加构建信息>源文件

LUTObj.CoderInfo.StorageClass =“自定义”;LUTObj.CoderInfo.CustomStorageClass =“ImportFromFile”;LUTObj.CoderInfo.CustomAttributes.HeaderFile =“ex_myHdr_LUT.h”;set_param (“ex_LUTObj”“CustomSource”“ex_mySrc_LUT.c”

生成和检查代码

配置模型以从生成的代码编译可执行文件。

set_param (“ex_LUTObj”“GenCodeOnly”“关闭”

从模型生成代码。

slbuild (“ex_LUTObj”
已成功完成:ex_LUTObj的构建过程构建总结已构建的顶级模型目标:模型操作重建原因========================================================================================== ex_LUTObj生成和编译的代码生成信息文件不存在。构建1个模型(0个模型已经更新)构建持续时间:0h 0m 26.058s

在代码生成报告中,查看生成的文件ex_LUTObj.h.该文件通过包含头文件导入宏定义和结构类型定义ex_myHdr_LUT.h

文件= fullfile(“ex_LUTObj_ert_rtw”“ex_LUTObj.h”);rtwdemodbtype(文件,“# include“ex_myHdr_LUT.h””“# include“ex_myHdr_LUT.h””, 1, 1)
# include“ex_myHdr_LUT.h”

在源文件中ex_LUTObj.c,模型中的编码算法一步函数将断点和表数据传递给执行表查找的函数。算法也通过了bp1Len因此查找函数可以遍历表数据的行和列,这些数据在生成的代码中作为序列化的1-D数组出现。

文件= fullfile(“ex_LUTObj_ert_rtw”“ex_LUTObj.c”);rtwdemodbtype(文件,'/*模型阶跃函数*/''/*模型初始化函数, 1,0)
/*模型步长函数*/ void ex_LUTObj_step(void) {/* Outport: '<根>/Out1'合并:* Inport: '<根>/In1' * Inport: '<根>/In2' * Lookup_n-D: '<根>/查找表' */ ex_LUTObj_Y。Out1 = look2_binlcapw(ex_LUTObj_U。三机一体,ex_LUTObj_U。In2 (& (LUTObj.BP1 [0])), (& (LUTObj.BP2 [0])), (& (LUTObj.Table [0])), ex_LUTObj_ConstP。LookupTable_maxIndex (uint32_T) bp1Len);}

限制

  • 你不能使用万博1manbetx仿真软件。断点对象或万博1manbetx仿真软件。LookupTable引用万博1manbetx仿真软件。断点对象作为可重用组件的特定于实例的参数数据。例如,你不能将这些对象中的一个用作:

    • 模型工作区中的模型参数或类中的模型参数值模型块。

    • 对象的掩码参数的值CodeReuse子系统块。

    • 通过创建自定义库重用的子系统上的掩码参数的值。

    但是,您可以使用独立的万博1manbetx仿真软件。LookupTable对象,它们不引用万博1manbetx仿真软件。断点物体,用这些方式。

  • 当块在子系统中使用万博1manbetx仿真软件。LookupTable万博1manbetx仿真软件。断点对象时,不能仅在子系统上设置数据类型覆盖。相反,在整个模型上设置数据类型覆盖。

在R2016b中引入