在 Requirements Table 模块中设置数据类型
当您在 Requirements Table模块中创建数据时,您可以使用类型属性来设置数据类型。数据可以继承其数据类型,或者设置为内置、定点或枚举数据类型。数据也可以是非虚拟总线。默认情况下,Requirements Table模块数据继承其数据类型。
有关创建数据的更多信息,请参阅 在 Requirements Table 模块中定义数据。
指定数据类型
您可以使用符号窗格和属性检查器或模型资源管理器指定数据类型。
要使用符号窗格和属性检查器指定数据类型:
打开 Requirements Table 模块。
打开符号窗格。在建模选项卡的设计数据部分中,点击符号窗格。
右键点击要修改的数据,然后点击检查以在属性检查器中打开数据属性。
在属性选项卡中,选择类型属性中的数据类型。
要使用模型资源管理器指定数据类型:
打开模型浏览器。在建模选项卡的设计数据部分中,点击模型资源管理器。
在模型层次结构窗格中,展开模型树视图并选择 Requirements Table模块。
点击要修改的数据。
在类型属性中选择数据类型。
在模型浏览器中,您还可以过滤数据类型选项。在常规选项卡中,点击显示数据类型助手按钮 以显示数据类型助手。然后从模式下拉菜单中选择一个选项。可用的数据类型取决于您选择的模式:
模式 | 要指定的内容 |
---|---|
Inherit (默认) | 数据类型是根据作用域属性继承的:
|
Built in | 选择支持的内置数据类型。 |
Fixed point | 指定定点数据属性。 |
Enumerated | 输入您在基础工作区中定义的 Simulink.IntEnumType 对象的名称。 |
Bus Object | 输入 注意 您可以点击编辑按钮,使用Simulink类型编辑器创建或修改
|
Expression | 输入一个计算结果为数据类型的表达式。 |
继承数据类型
Requirements Table模块数据可以从其连接的信号继承其数据类型,包括定点类型。要设置数据以继承其数据类型:
在模型浏览器中选择数据。或者,选择符号窗格中的数据并打开属性检查器。
在模型资源管理器或属性检查器中,将 Type 设置为 Inherit:与 Simulink 相同。
将作用域属性设置为局部、参数、输入或 输出的数据也可以从发送给它的信息中继承复/实性。要继承复/实性,请将复/实性设置为继承。
构建模型后,模型资源管理器的 CompiledType 列显示从 Simulink 继承的实际数据类型。如果预期类型与推断类型匹配,则 Requirements Table模块继承该数据类型。
指定内置数据类型
在模型资源管理器中,当您展开数据类型助手并将模式设置为内置时,您可以将类型设置为这些内置数据类型。内置数据类型有:
数据类型 | 描述 |
---|---|
double | 64 位双精度浮点 |
single | 32 位单精度浮点 |
half | 半精度数据类型占用 16 位内存,但其浮点表示使其能够处理比相同大小的整数或定点数据类型更宽的动态范围。请参阅The Half-Precision Data Type in Simulink (Fixed-Point Designer)。 |
int64 | 64 位有符号整数 |
int32 | 32 位有符号整数 |
int16 | 16 位有符号整数 |
int8 | 8 位有符号整数 |
uint64 | 64 位无符号整数 |
uint32 | 32 位无符号整数 |
uint16 | 16 位无符号整数 |
uint8 | 8 位无符号整数 |
boolean | 布尔值 |
string | 字符串标量 |
Fixed-Point Designer 数据属性
要将数据表示为 Requirements Table 模块中的定点数,必须安装 Fixed-Point Designer™。
您可以设置以下定点属性:
符号性
选择您希望定点数据为有符号还是无符号。有符号数据可以表示正量或负量。无符号数据仅代表正值。默认值为有符号。
字长
指定保存量化整数的字的大小(以位为单位)。大字长表示大数量,并且比小字长具有更高的精度。字长可以是 0 到 128 位之间的任意整数。默认值为 16。
缩放
指定缩放定点数据的方法,以避免溢出情况并最大限度地减少量化问题。您可以选择以下缩放模式:
缩放模式 | 描述 |
---|---|
二进制小数点(默认) | 数据类型助手显示小数长度参数,该参数指定二进制小数点位置。 二进制小数点可以是正整数,也可以是负整数。正整数将二进制小数点从最右边的位向左移动相应的量。例如,输入 2 将二进制小数点设置在右边第二位的前面。负整数会将二进制小数点从最右边的位向右移动相应的量,如下例所示: 默认值为 |
斜率和偏置 | 数据类型助手显示斜率和偏置参数:
您可以将斜率和偏差输入为包含在 MATLAB 工作区中定义的参数的表达式。 |
注意
使用二进制点缩放来简化生成代码中定点数的实现。使用二进制点缩放的定点数运算通过简单的位移位来执行,并省去了单独的斜率和偏差值所需的昂贵代码实现。
数据类型覆盖
指定数据类型覆盖设置是 Inherit
还是 Off
。请参阅Fixed-Point Instrumentation and Data Type Override (Fixed-Point Designer)。
计算最佳精度定标
让 Simulink 根据您指定的最小值和 最大值属性自动计算二进制小数点和 斜率和偏置缩放的最佳精度值。
要自动计算最佳精度缩放值:
指定最小值或最大值属性。
点击计算最佳精度定标。
Simulink 计算缩放值,然后将其显示在小数长度或 斜率和 偏置字段中。
注意
最小值和 最大值属性不适用于作用域属性设置为常量或 参数的数据。该软件无法计算这些类型的数据的最佳精度缩放。
定点详细信息
显示有关数据类型助手中定义的定点数据的信息:
Minimum
和Maximum
显示您在最小值和 最大值属性中指定的相同值。Representable minimum
、Representable maximum
、Precision
分别表示定点数据可以表示的最小值、最大值、以及精度。
如果在没有先编译模型的情况下无法确定字段的值,则定点详细信息子窗格会将该值显示为 Unknown
。如果您更改定义定点数据的值,定点详细信息子窗格显示的值不会自动更新。要更新定点详细信息子窗格中显示的值,点击刷新详细信息。
点击刷新详细信息不会修改数据。它仅改变显示。要应用显示的值,点击应用或 确定。
定点详细信息子窗格指示由定点数据规范导致的问题。例如,此子窗格显示两个问题。
标记为 Maximum
的行表示 Maximum属性指定的值无法用定点数据表示。要解决该问题,请进行以下修改之一,以便定点数据可以表示最大值:
减少最大值属性的值。
增加字长。
减少分数长度。
标记为 Minimum
的行显示消息 Cannot evaluate
,因为评估最小值属性指定的表达式 MySymbol
未返回数值。当表达式无法计算时,定点详细信息子窗格将显示未计算的表达式(截断为 10 个字符)来代替不可用的值。为了解决此问题,请在基础工作区中定义 MySymbol
以提供一个数值。
如果点击“刷新详细信息”,问题指示和描述将被删除,并且“MySymbol
”的值将出现在未评估的文本的位置。
枚举的数据类型
在模型资源管理器或属性检查器中,您可以明确指定枚举数据或让数据继承它。要将数据明确设置为枚举类型,请将类型设置为 Enum <class name>,并将 <class name>
替换为您在 MATLAB 路径上的 MATLAB 文件中定义的枚举数据类型的名称。要从连接的 Simulink 信号继承枚举类型,请将类型设置为 Inherit:与 Simulink 相同。仅当作用域属性为输入时,您才能继承枚举类型数据。有关更多信息,请参阅 在 Simulink 模型中使用枚举数据 (Simulink)。
总线对象
在模型资源管理器或属性检查器中,当您将类型设置为总线: <对象名称>时,您可以将数据类型设置为总线。将 <object name>
替换为 Simulink.Bus
的名称。Requirements Table 模块仅支持非虚拟总线。请参阅合成接口规范 (Simulink)。对于 Requirements Table模块总线输入,传入的虚拟总线信号被转换为非虚拟总线。
您可以将 Requirements Table 模块的总线输入和输出连接到其他总线信号,包括:
输出总线信号的模块,例如 Bus Creator 模块。
接受总线信号作为输入的模块,例如 Bus Selector 和 Gain 模块。
S-Function 模块。
其他 Requirements Table 模块。
表达式数据类型
您可以使用模型资源管理器或属性检查器将 Requirements Table 模块数据的类型指定为表达式。
要使用模型资源管理器,请将模式属性设置为 Expression
。在类型属性中,将 <data type expression>
替换为计算数据类型的表达式。
要使用属性检查器,请双击类型属性,清除内容,然后输入表达式。
您可以使用以下表达方式:
来自 MATLAB 工作区的别名类型,如
Simulink.AliasType
(Simulink) 中所述。fixdt
(Simulink) 函数创建一个描述定点或浮点数据类型的Simulink.NumericType
对象。type
(Stateflow) 运算符,根据先前定义的数据确定类型。
例如,假设您想要将变量 myDataType
指定为 single
数据类型的别名,以用作输入数据的类型属性中的表达式。通过输入以下命令创建 Simulink.AliasType
类的实例并设置其 BaseType
属性:
myDataType = Simulink.AliasType;
myDataType.BaseType = "single";
在属性检查器中,输入数据类型别名 myDataType
作为类型属性中的值。
注意
如果其中一个数据使用别名类型并且大小可变,则 Requirements Table 模块不支持代码生成。此限制不适用于模块输入、输出或本地数据。有关可变大小数据的更多信息,请参阅 可变大小。