主要内容

参数数据类型在生成的代码中

一块参数的数据类型(如获得参数的获得块),数字MATLAB®变量或者金宝appSimulink.Parameter对象决定了数据类型对应的实体在生成的代码中使用(例如,一个全局变量或函数的一个参数)。生成更高效的代码,您可以匹配参数数据类型与信号数据类型或参数存储在较小的数据类型。

基本信息设置模块参数的数据类型在一个模型中,看到的控制块参数的数据类型

参数数据类型的重要性

一块参数的数据类型,MATLAB变量或者参数对象使用决定了所生成的代码使用的数据类型在内存中存储参数值。例如:

  • 如果你设置模型配置参数默认参数的行为(见默认参数的行为)可调,获得参数的获得出现在生成的代码块作为一个领域的全球数据结构存储参数。如果你应用的数据类型块模型中的参数,结构字段代码使用相应的数据类型,real32_T

  • 如果你应用存储类ExportedGlobal到一个金宝appSimulink.Parameter对象,该对象出现在生成的代码作为一个单独的全局变量。如果你设置数据类型对象的属性int8,全局变量在代码中使用相应的数据类型,int8_T

  • 如果你配置一个金宝appSimulink.Parameter对象在一个工作区作为模型参数,模型对象出现在生成的代码作为一个正式的参数(参数)模型的入口点函数,如一步函数。的数据类型对象的属性决定了形式参数的数据类型。

除了确定生成的代码使用的数据类型在内存中存储参数值,参数的数据类型,变量或对象也可以:

  • 导致块铸造参数的值之前,代码生成。演员会导致溢出,下溢或量化。

  • 导致生成的代码包括额外的代码,例如饱和度代码。

由于参数的数据类型不匹配类型转换

块参数的数据类型时,工作空间变量,可以使用类型转换和信号不同,块调和数据类型不匹配。这些类型转换会导致算法生成的代码,包括模型一步函数,包括明确投调和在存储数据类型不匹配和C位变化在定点比例调和不匹配。

参数数据类型不匹配时可能发生:

  • 数据类型为MATLAB变量或参数所指定的对象(金宝appSimulink.Parameter)与一块参数的数据类型不同。块参数类型转换变量的值或对象。

  • 初始值的数据类型指定不同的数据类型初始化信号或状态。

  • 您指定的数据类型参数不同于块的数据类型参数作用于信号或信号。一些块浇铸参数来执行操作。例如,获得这个定型块执行。

如果您配置一个变量或对象使用偏见或部分定点坡,块参数不能执行定型。在这种情况下,您必须匹配的数据类型的变量或参数对象的数据类型参数。使用这些技巧之一:

  • 使用上下文敏感的数据类型的变量或参数对象。对于一个MATLAB变量,使用设置变量的值。一个参数对象,设置数据类型财产汽车

  • 使用一个金宝appSimulink.AliasType金宝appSimulink.NumericType对象设置块参数的数据类型和数据类型的参数对象。

    使用这种技术,当你不能依赖上下文相关的数据类型,例如,当您使用领域的结构设置块参数的值。

  • 手动指定块的相同数据类型参数和变量或参数对象。

    使用这种技术来减少依赖模型的继承和上下文敏感的数据类型和外部变量和对象。

块,通过指针或引用访问参数数据在生成的代码中,如果您为工作区指定不同的数据类型变量和块参数,生成的代码隐式转换的数据类型变量的数据类型参数。注意,一个隐式的演员需要一个数据复制可以显著增加内存消耗和降低大型数据集的代码的执行速度。例如,查找表块经常通过指针或引用访问大型向量或矩阵生成的代码。

信息匹配参数的数据类型使用模型参数时,看到的控制模型参数和参数值的数据类型

检测沮丧和损失精度的数据类型不匹配

您可以配置诊断配置参数检测意外数据类型不匹配,导致量化和参数精度的损失。看到模型配置参数:数据有效性诊断

考虑其他建模模式

当您使用特定的建模模式和定点等构造数据类型,参数结构,和查找表对象,使用不同的技术来控制参数的数据类型。

可调参数和Best-Precision定点伸缩

best-precision定点扩展应用于一块可调参数或参数对象,您可以使用定点工具自动定量整个系统或使用数据类型助理单独配置参数或对象。看到计算可调块Best-Precision定点缩放参数

如果一个可调参数使用best-precision定点缩放、动态仿真模块金宝app®选择一个数据类型根据您指定的最小值和最大值参数(见为块参数指定最小值和最大值)。您可以指定这些值块对话框中使用的参数或属性金宝appSimulink.Parameter对象。

如果你不指定最小值或最大值,模型选择基于参数的值的数据类型。金宝app被选中的扩展可能会限制可能的优化值的范围。因此,这是一个最佳实践,为每一个可调参数指定最小值和最大值的值。

一个可调参数可以使用best-precision缩放即使你没有指定参数的数据类型。例如,获得块可以选择best-precision比例如果参数的数据类型在块对话框中设置继承:继承通过内部规则。这个设置是默认的块。

控制结构字段的数据类型

当你使用结构块参数的值(例如初始化一个总线信号),或当你组织多个块参数值到一个单独的结构,您可以创建一个金宝appSimulink.Bus对象使用的数据类型金宝appSimulink.Parameter对象。然后您可以控制单个字段的数据类型的结构。看到控制字段的数据类型和特点通过创建参数对象控制数据类型的字段初始条件结构

控制查找表对象的数据类型

当你使用金宝appSimulink.LookupTable金宝appSimulink.Breakpoint对象存储表查找表和断点数据块,控制表的数据类型和断点数据,使用这些技术之一:

  • 设置价值财产的嵌入式金宝appSimulink.lookuptable.Table金宝appSimulink.lookuptable.Breakpoint对象等使用无类型的表达式(1 2 3),它返回一个向量。如果断点规范被设置为明确的价值观,使用MATLAB表达式文本框和列表界面底部的属性对话框。控制数据类型,设置数据类型房地产以外的价值汽车

    使用这种技术分离的价值表或断点数据类型的数据,它可以改善可读性和理解你的设计。然后您可以使用一个金宝appSimulink.NumericType金宝appSimulink.AliasType对象:

    • 自定义数据类型的名称在生成的代码。

    • 匹配的数据类型表或断点数据与模型中的数据类型的一个信号。

  • 设置价值使用输入表达式嵌入对象的属性等单((1 2 3))。使用定点数据类型,设置价值财产的fi对象。如果断点规范被设置为明确的价值观,使用MATLAB表达式文本框和列表界面底部的属性对话框。

    设置数据类型嵌入对象的属性的默认值,汽车。表和断点数据然后获得您所使用的数据类型设置价值财产。

    使用这种技术来存储中的数据类型信息价值属性,它可以简化的方式与之交互金宝appSimulink.LookupTable金宝appSimulink.Breakpoint对象。你可以离开数据类型属性的默认值。

    当你以后改变断点或表中的数据价值财产,保护数据类型信息通过使用一个类型的表达式。另外,如果你使用一个命令在命令提示符处或脚本更改数据,避免使用一个输入表达式,使用下标赋值,(:)

    myLUTObject.Table.Value (:) = (4 5 6);

    当你改变中存储的数据价值财产,如果你不使用输入表达式或下标赋值,你失去的数据类型信息。

当在一个子系统使用金宝appSimulink.LookupTable金宝appSimulink.Breakpoint对象,你不能设置数据类型覆盖(见覆盖控制定点仪器和数据类型只在子系统)。相反,设置数据类型覆盖整个模型。

数据类型的表达式参数对象

您可以使用一个表达式来设置一个参数的值对象(如金宝appSimulink.Parameter)。编码的数学表达不同对象之间的关系。当你使用这种技术,不同的数据输入规则适用。看到通过使用一个数学表达式设置变量值

相关的话题