Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

使用 Data Type Assistant 指定数据类型

Data Type Assistant 是一种交互式图形工具,用于简化为模块和数据对象指定数据类型的任务。该助手出现在模块和对象对话框上,与提供数据类型控制的参数(例如 Output data type 参数)相邻。例如,它出现在 Constant 模块对话框的 Signal Attributes 窗格中,如下所示。

您可以通过点击适用的按钮来选择显示或隐藏 Data Type Assistant

  • 点击 Show data type assistant 按钮 显示助手。

  • 点击 Hide data type assistant 按钮 隐藏显示的助手。

可以使用 Data Type Assistant 来指定数据类型,如下所示:

  1. Mode 字段中,选择您要指定的数据类型的类别。一般来说,包括以下选项:

    ModeDescription

    Inherit

    数据类型的继承规则

    Built in

    内置数据类型

    Fixed point

    定点数据类型

    Enumerated

    枚举数据类型

    Bus object

    总线对象数据类型

    Expression

    计算结果为数据类型的表达式

    助手会动态更改以显示与选定模式对应的不同选项。例如,将 Mode 设置为 “Expression” 会导致 Constant 模块对话框显示为如下所示。

  2. Mode 字段右侧的字段中,选择或输入数据类型。

    例如,假设您将变量 myDataType 指定为 single 数据类型的别名。您通过输入以下命令创建 Simulink.AliasType 类的实例并设置其 BaseType 属性:

    myDataType = Simulink.AliasType
    myDataType.BaseType = 'single'

    您可以使用此数据类型对象来指定 Constant 模块的输出数据类型。输入数据类型别名 myDataType 作为助手中表达式的值。

  3. 点击 OKApply 按钮以应用您的更改。

    助手使用您指定的数据类型填充模块或对象对话框中的关联数据类型参数。在以下示例中,Constant 模块的 Output data type 参数指定的表达式与您使用助手输入的表达式相同。

有关可以使用 Data Type Assistant 指定的数据类型的详细信息,请参阅输入有效数据类型值有关指定定点数据类型的详细信息,请参阅Specify Fixed-Point Data Types with the Data Type Assistant (Fixed-Point Designer)

指定定点数据类型

当 Data Type Assistant 的 Mode 为 “Fixed point” 时,Data Type Assistant 显示用于指定有关您的定点数据类型的信息的字段。例如,下图显示 Gain 模块的 Block Parameters 对话框,其中选择了 Signal Attributes 选项卡并指定了定点数据类型。

如果 Scaling 是 “Slope and bias” 而不是 “Binary point”,则 Data Type Assistant 将显示 Slope 字段和 Bias 字段,而不是 Fraction length 字段:

您可以使用 Data Type Assistant 来设置下列定点属性:

Signedness

指定您希望定点数据为 “Signed” 还是 “Unsigned”。有符号数据可以表示正值和负值,无符号数据只表示正值。默认设置是 “Signed”。

Word length

指定用来存储量化整数的字的位大小。较大的字长代表较大的值,其精度也高于较小的字长。字长可以是 0 到 128 之间的任何整数。默认的位大小是 16。

Scaling

指定定点数据的定标方法,以避免发生溢出情况并最大限度地减少量化错误。默认方法是 “Binary point” 定标。您可以选择以下两种定标模式之一:

定标模式Description
Binary point

如果选择此模式,Data Type Assistant 将显示 Fraction Length 字段,用于指定二进制小数点位置。

二进制小数点可以是正整数或负整数。正整数将二进制小数点从最右侧位左移指定位数。例如,如果输入 2,则将二进制小数点设置在从右侧数第二个位的前面。负整数将二进制小数点从最右侧位右移指定位数,如以下示例所示:

默认二进制小数点为 0。

Slope and bias

如果选择此模式,Data Type Assistant 将显示用于输入 SlopeBias 的字段。

斜率可以是任何正实数,默认斜率为 1.0。偏置可以是任何实数,默认偏置为 0.0。您可以通过表达式的形式输入斜率和偏置,在表达式中包含在 MATLAB® 工作区中定义的参数。

注意

尽可能使用二进制小数点定标,以简化定点数据在生成的代码中的实现。采用二进制小数点定标的定点数据运算只需进行简单的位移,不需要为单独的斜率和偏置值执行代价高昂的代码实现。

有关定点定标的详细信息,请参阅Scaling (Fixed-Point Designer)

Data type override

Mode 是 “Built in” 或 “Fixed point” 时,您可以使用 Data type override 选项指定您希望此数据类型继承还是忽略针对其上下文(即:Simulink® 中使用该信号的模块、Simulink.Signal 对象或 Stateflow® 图)指定的数据类型覆盖设置。默认行为是 “Inherit”。

数据类型覆盖模式Description
Inherit”(默认值)

从信号的上下文(即:从 Simulink 中使用该信号的模块、Simulink.Signal 对象或 Stateflow 图)中继承数据类型覆盖设置。

Off

忽略信号上下文的数据类型覆盖设置,并使用为信号指定的定点数据类型。

由于能够关闭单个数据类型的数据类型覆盖,您可以在应用数据类型覆盖时更好地控制模型中的数据类型。例如,您可以使用此选项确保数据类型满足下游模块的要求,而忽略数据类型覆盖设置。

Calculate Best-Precision Scaling

点击此按钮可根据指定的最小值和最大值为 “Binary point” 和 “Slope and bias” 定标计算最佳精度值。Simulink 在 Fraction Length 字段或 SlopeBias 字段中显示定标值。有关详细信息,请参阅Constant Scaling for Best Precision (Fixed-Point Designer)

显示定点详细信息

当您指定定点数据类型时,可以使用 Fixed-point details 子窗格查看有关 Data Type Assistant 中当前显示的定点数据类型的信息。要查看该子窗格,请点击 Data Type Assistant 中 Fixed-point details 旁边的扩展按钮。Fixed-point details 子窗格出现在 Data Type Assistant 的底部:

标签为 Output minimumOutput maximum 的行显示的值与 Data Type Assistant 上方的对应 Output minimumOutput maximum 字段中显示的值相同。这些字段的名称可能与图中所示不同。例如,定点模块参数将显示 Parameter minimumParameter maximum,对应的 Fixed-point details 行也将具有相应的标签。有关详细信息,请参阅指定信号范围指定模块参数的最小值和最大值

标签为 Representable minimumRepresentable maximumPrecision 的行会始终显示。这些行显示可由 Data Type Assistant 中当前显示的定点数据类型表示的最小值、最大值和精度。

如果点击 Calculate Best-Precision Scaling,或者更改范围限制、定义定点数据类型的值或模型中其他任何位置的任何内容,Fixed-point details 子窗格显示的值都不会自动更新。要更新 Fixed-point details 子窗格中显示的值,请点击 Refresh Details。Data Type Assistant 将随之更新或重新计算所有值并显示结果。

点击 Refresh Details 不会更改模型中的任何内容,而只会更改显示。点击 OKApply 可使显示的值生效。如果在不先编译模型的情况下无法识别某个字段的值,Fixed-point details 子窗格会将该值显示为 Unknown

如果点击 Refresh Details 时发生错误,Fixed-point details 子窗格会在相应行的左侧显示错误标志,并在右侧显示错误描述。例如,下图显示了两个错误:

标签为 Output minimum 的行显示错误 Cannot evaluate,因为对在 Output minimum 字段中指定的表达式 MySymbol 求值时没有返回适当的数值。如果表达式未计算成功,Fixed-point details 子窗格会显示未计算成功的表达式(根据需要截断为 10 个字符以节省空间),而不显示值。

在这种情况下,要更正错误,您需要在可访问的工作区中定义 MySymbol 以提供适当的数值。点击 Refresh Details 后,MySymbol 的值将取代其未计算成功的文本,错误指示符和错误描述也将消失。

要更正 Output maximum 处显示的错误,您需要执行减小 Output maximum、增大 Word length 和减小 Fraction length 这三项更改中的一项或几项,以使定点数据类型足以表示它可以具有的最大值。

与特定模块相关的其他值也可能出现在 Fixed-point details 子窗格中。例如,在 Discrete-Time Integrator 模块的 Signal Attributes 选项卡上,子窗格可能如下所示:

针对 Upper saturation limitLower saturation limit 显示的值处于灰显状态。这类显示表明该模块当前未使用对应的参数。灰显值可以忽略。

为了节省空间,Initial condition 显示向量或矩阵中的最小值和最大值,而使用省略号表示其他值。向量或矩阵的基本定义不受影响。

Lock output data type setting against changes by the fixed-point tools

选中此复选框可防止用定点工具或定点顾问选择的类型替换当前数据类型。有关定点数据自动定标的说明,请参阅Scaling (Fixed-Point Designer)

指定枚举数据类型

您可以通过选择 “Enum: <类名称>” 选项并指定枚举对象来指定枚举数据类型。

Data Type Assistant 中,可以使用 Mode 参数将总线指定为模块的数据对象。选择 “Enumerated” 选项并指定枚举对象。

有关枚举数据类型的详细信息,请参阅数据类型

指定总线对象数据类型

总线信号的数据类型一节中列出的模块支持将总线对象指定为数据类型。对于这些模块,请在 Data type 参数中选择 “Bus: <对象名称>” 选项并指定总线对象。您不能使用 “Expression” 选项将总线对象指定为模块的数据类型。

Data Type Assistant 中,可以使用 Mode 参数将总线指定为模块的数据对象。选择 “Bus” 选项并指定总线对象。

您可以将总线对象指定为 Simulink.SignalSimulink.ParameterSimulink.BusElement 等数据对象的数据类型。在模型资源管理器中,在数据对象的 Properties 对话框中,在 Data type 参数中选择 “Bus: <对象名称>” 选项并指定总线对象。您也可以使用 “Expression” 选项指定总线对象。

有关指定总线对象数据类型的详细信息,请参阅使用 Simulink.Bus 对象数据类型指定总线属性

另请参阅

|

相关主题