Main Content

Simulink.Parameter

存储、共享和配置参数值

说明

创建 Simulink.Parameter 对象以设置模型中的一个或多个模块参数(例如 Gain 模块的增益参数)的值。您在工作区或数据字典中创建对象。在对象中设置参数值,然后从模块中引用对象。

使用 Simulink.Parameter 对象可以:

  • 在多个模块参数之间共享一个值。

  • 表示工程常量或可调标定参数。

  • 将参数值与其数据类型和其他属性分离。

  • 配置用于代码生成的参数数据。

对象的 Value 属性存储参数值。要在模型中使用对象,请将模块参数的值设置为包含对象名称的表达式。从表达式中省略 Value 属性。有关详细信息,请参阅使用参数对象

有关模块参数的详细信息,请参阅设置模块参数值生成的代码如何存储内部信号、状态和参数数据 (Simulink Coder)

要将 Simulink.Parameter 对象配置为模型参量,该对象必须位于模型工作区中。在模型资源管理器等对话框中,为参量对象选择参量。有关详细信息,请参阅参数化可重用引用模型的实例

注意

模型工作区中具有字符串值的 Simulink.Parameter 对象无法配置为模型参量。有关对字符串作为 Simulink.Parameter 值的限制的详细信息,请参阅 Simulink 字符串限制 中的 Simulink.Parameter

创建对象

通过以下方式创建 Simulink.Parameter 对象:

描述

示例

paramObj = Simulink.Parameter 返回具有默认属性值的 Simulink.Parameter 对象。

示例

paramObj = Simulink.Parameter(paramValue) 返回 Simulink.Parameter 对象,并将 Value 属性初始化为 paramValue

属性

全部展开

要在模块参数中使用的值,指定为以下任一有效值:

如果使用 Simulink.Parameter 对象来设置可重用引用模型中的模块参数值,则只要在模型引用层次结构父级的某个位置提供显式值,就可以在该对象的值保留为空(Value 设置为 [])的情况下将该模型作为引用模型进行编译和仿真。在这种情况下,您无法直接仿真模型。当该值为空时,您必须为该对象提供 DataTypeDimensions。虽然您已指定空值,该软件仍会通过使用以下值之一来合成 Value

  • Max

  • Min(如果未指定 Max

  • 1(如果未指定 MinMax

请参阅参数化可重用引用模型的实例

您还可以使用 MATLAB® 语法来指定值。

示例表达式描述
15.23

指定标量值

[3 4; 9 8]

指定矩阵

3+2i

指定复数值

"Mystring"

指定字符串值

struct('A',20,'B',5)

指定具有两个字段 AB 的结构体,这两个字段的值分别为双精度值 205

将模块参数组织为结构体(请参阅在结构体中组织相关的模块参数定义)或初始化总线中的信号元素(请参阅指定总线元素的初始条件)。

slexpr('myVar + myOtherVar')指定表达式 myVar + myOtherVar,其中 myVarmyOtherVar 是其他 MATLAB 变量或参数对象。软件会保留对象与变量之间的这种数学关系。

要使用 Simulink.Parameter 对象存储特定数值数据类型的值,请使用 Value 属性指定理想值,使用 DataType 属性控制数据类型。

如果您使用定型的表达式(如 single(32.5))来设置 ValueDataType 属性将改变以反映新类型。最佳做法是使用非定型表达式,从而通过重复量化或数据类型饱和来避免累积数值错误,尤其是对于定点数据类型。

如果您将 Simulink.Parameter 对象 Value 设置为字符串或字符值,则 Value 将存储为 MATLAB 字符串。有关字符串作为 Simulink.Parameter 对象值的限制,请参阅 Simulink 字符串限制中的 Simulink.Parameter

示例: 3.15

示例: "mystring"

示例: 1.2 + 3.2i

示例: true

示例: myEnumType.myEnumValue

示例: struct('field1',15,'field2',7.32)

示例: slexpr('myVar + myOtherVar')

提示

  • 要更轻松地编辑存储在 Simulink.Parameter 对象中的大型向量、二维矩阵或结构体,请使用变量编辑器。请参阅创建、编辑和管理工作区变量

  • 当您以交互方式(例如通过使用模型资源管理器)指定三维或三维以上的数组时,此属性会将数组显示为包含对 reshape 函数的调用的表达式。要编辑数组中的值,请修改 reshape 调用的第一个参量,该参量将所有数组值包含在串行化向量中。当沿某个维度添加或删除元素时,还必须更正表示修改后的维度的长度的参量。

数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | struct | fi | enum | string
复数支持:

此 属性 为只读。

为参数对象生成代码的说明,以 Simulink.CoderInfo 对象的形式返回。

请修改此属性包含的 Simulink.CoderInfo 对象的属性。

例如,Simulink.CoderInfo 对象的 StorageClass 属性确定 Simulink® 代码生成工具箱如何为生成的代码中的参数对象分配内存。有关详细信息,请参阅C Data Code Interface Configuration for Model Interface Elements (Simulink Coder)Choose Storage Class for Controlling Data Representation in Generated Code (Embedded Coder)

参数对象的自定义描述,指定为字符向量。使用此属性来记录参数对象在您的算法中的重要性。

如果您有 Embedded Coder® 许可证,您可以将此描述配置为在生成的代码中显示为注释。请参阅Simulink 数据对象描述 (Embedded Coder)

示例: 'This parameter represents the maximum rotation speed of the engine.'

数据类型: char | string

Value 属性中参数值的数据类型,指定为 'auto' 或字符向量。当您对模型进行仿真或生成代码时,该软件将值强制转换为指定的数据类型。

如果您指定默认设置 'auto',则参数对象使用的数据类型与使用该对象的模块参数的数据类型相同。请参阅Reduce Maintenance Effort with Data Type Inheritance

当将 Value 属性设置为非 double 数值时,该对象通常会根据 Value 属性的值设置 DataType 属性。例如,将 Value 属性设置为 int8(5) 时,该对象将 DataType 属性的值设置为 'int8'

要显式指定内置数据类型(请参阅 Simulink 支持的数据类型),请指定以下选项之一:

  • 'double'

  • 'single'

  • 'half'

  • 'int8'

  • 'uint8'

  • 'int16'

  • 'uint16'

  • 'int32'

  • 'uint32'

  • 'int64'

  • 'uint64'

  • 'boolean'

  • 'string'

要指定定点数据类型,请使用 fixdt 函数。例如,指定 'fixdt(1,16,5)'

如果使用 Simulink.AliasTypeSimulink.NumericType 对象在您的模型中创建和共享自定义数据类型,请指定对象的名称。

要指定枚举的数据类型,请在 Enum: 之后使用类型的名称。例如,指定 'Enum: myEnumType'

要将 Simulink.ValueType 对象指定为数据类型,请在 ValueType: 之后使用对象的名称。例如,指定 'ValueType: myValueType'

在对象的 Value 属性中存储结构体或结构体数组时,对象会将 DataType 属性设置为 'struct'。要将 Simulink.Bus 对象指定为数据类型,请在 Bus: 之后使用总线对象的名称。例如,指定 'Bus: myBusObject'

如果您将 Simulink.Parameter 对象 Value 设置为字符串,请注意 Simulink 字符串限制中的限制。

当您指定 Simulink.ValueTypeSimulink.Bus 对象作为数据类型时,将忽略 Simulink.Parameter 对象的某些属性。例如,忽略 Simulink.Parameter 对象的 MinMaxUnit 属性。软件改用 Simulink.ValueType 对象或 Simulink.Bus 对象中 Simulink.BusElement 对象的对应属性。

示例: 'auto'

示例: 'int8'

示例: 'fixdt(1,16,5)'

示例: 'myAliasTypeObject'

示例: 'string'

示例: 'Enum: myEnumType'

示例: 'ValueType: myValueType'

示例: 'Bus: myBusObject'

提示

当您以交互方式编辑数据类型时,要显示数据类型助手,请点击显示数据类型助手按钮 。有关详细信息,请参阅使用数据类型助手指定数据类型

数据类型: char | string

对象的 Value 属性可以存储的最小值,指定为实数 double 标量。

默认值为空,表示参数值没有最小值。

如果在 Value 属性中存储复数,Min 属性将分别应用于实部和虚部。

如果 Value 小于最小值,或最小值位于对象数据类型范围外,软件将生成警告。当更新图形或开始仿真时,软件将生成错误。

有关软件如何使用此属性的详细信息,请参阅指定模块参数的最小值和最大值

示例: -0.92

依存关系

当以下任一选项适用时,软件将忽略此属性的值:

  • Value 指定结构体。

    要指定结构体的最小值,请将 DataType 设置为 Simulink.Bus 对象,并使用 Simulink.Bus 对象中对应的 Simulink.BusElement 对象为每个字段指定最小值。请参阅通过创建参数对象来控制字段数据类型和特征

  • DataType 指定 Simulink.ValueTypeSimulink.Bus 对象。

    软件改用 Simulink.ValueType 对象或 Simulink.Bus 对象中的 Simulink.BusElement 对象指定的最小值。

提示

对于具有定点数据类型的参数对象,对话框显示存储的最小整数属性,这是参数可以具有的最小值,指定为存储整数值。该值派生自真实值的最小值。

数据类型: double

对象的 Value 属性可以存储的最大值,指定为实数 double 标量。

默认值为空,表示参数值没有最大值。

如果在 Value 属性中存储复数,Max 属性将分别应用于实部和虚部。

如果 Value 大于最大值,或最大值位于对象数据类型范围外,该软件将生成警告。当更新图形或开始仿真时,软件将生成错误。

有关软件如何使用此属性的详细信息,请参阅指定模块参数的最小值和最大值

示例: 5.32

依存关系

当以下任一选项适用时,软件将忽略此属性的值:

  • Value 指定结构体。

    要指定结构体的最大值,请将 DataType 设置为 Simulink.Bus 对象,并使用 Simulink.Bus 对象中对应的 Simulink.BusElement 对象为每个字段指定最大值。请参阅通过创建参数对象来控制字段数据类型和特征

  • DataType 指定 Simulink.ValueTypeSimulink.Bus 对象。

    软件改用 Simulink.ValueType 对象或 Simulink.Bus 对象中的 Simulink.BusElement 对象指定的最大值。

提示

对于具有定点数据类型的参数对象,对话框显示存储的最大整数属性,这是参数可以具有的最大值,指定为存储整数值。该值派生自真实值最大值。

数据类型: double

参数值的物理单位,指定为说明有效单位的字符向量。有关详细信息,请参阅 Simulink 模型中的单位指定

示例: 'degC'

依存关系

DataType 指定 Simulink.ValueTypeSimulink.Bus 对象时,软件将忽略此属性的值。软件改用 Simulink.ValueType 对象或 Simulink.Bus 对象中的 Simulink.BusElement 对象指定的单位。

数据类型: char | string

参数值的数值复/实性,指定为 'real''complex'。对于模型工作区中的 Simulink.Parameter 对象,使用此属性配置模型参量的复/实性。请参阅参数化可重用引用模型的实例

对于数值,该软件从您在 Value 属性中指定的参数值推断出复/实性。在这种情况下,更改复/实性会导致错误。

依存关系

当以下任一选项适用时,软件将忽略此属性的值:

  • Value 指定一个数学表达式。

  • Value 指定结构体。

    要指定结构体的复/实性,请将 DataType 设置为 Simulink.Bus 对象,并通过使用 Simulink.Bus 对象中对应的 Simulink.BusElement 对象来指定每个字段的复/实性。请参阅通过创建参数对象来控制字段数据类型和特征

  • DataType 指定 Simulink.ValueTypeSimulink.Bus 对象。

    软件改用 Simulink.ValueType 对象或 Simulink.Bus 对象中的 Simulink.BusElement 对象指定的复/实性。

存储在 Value 属性中的值的维度,指定为行向量、字符向量或字符串标量。

当设置对象的 Value 属性时,对象将 Dimensions 属性的值设置为 double 行向量。该向量与 size 函数返回的向量相同。

如果要将对象配置为模型参量,并打算为父模型引用层次结构中其他位置的对象提供值,可以将 Value 属性留空(设置为 []),并显式设置 DimensionsData Type 属性。请参阅参数化可重用引用模型的实例

要使用符号维度,请指定字符向量。请参阅Implement Symbolic Dimensions for Array Sizes in Generated Code (Embedded Coder)

示例: [1 3]

示例: '[1 myDimParam]'

依存关系

  • 要启用此属性,Value 必须为空 ([])。否则,软件将从 Value 属性中派生维度。例如,值 [3 4;9 8] 具有维度 [2 2]

  • DataType 指定 Simulink.ValueType 对象时,软件会忽略此属性的值。软件改用 Simulink.ValueType 对象指定的维度。

数据类型: double | char | string

示例

全部折叠

在 MATLAB 命令行窗口中,创建一个 Simulink.Parameter 对象。

myParam = Simulink.Parameter;

Value 属性指定一个数值。

myParam.Value = 15.23;

使用 MinMax 属性指定参数可采用的最小值和最大值。

myParam.Min = 10.11;
myParam.Max = 25.27;

打开一个新的 Simulink 模型。添加 Gain 模块,并将其增益参数设置为 myParam。在仿真期间,增益参数使用值 15.23

在 MATLAB 命令行窗口中,创建一个存储值 2.52Simulink.Parameter 对象。

myParam = Simulink.Parameter(2.52);

通过访问该对象的 Value 属性来更改值。这种方法会保留该对象的其他属性的值。

myParam.Value = 1.13;

为减少模型维护,可以将 DataType 属性保留为默认值 auto。参数对象从使用该对象的模块参数中获得数据类型。

为降低在您更改模型中的信号数据类型和其他数据类型时数据类型发生变化的风险,可以为参数对象显式指定数据类型。例如,在生成将参数数据导出到自定义代码的代码时,为对象显式指定一个数据类型。

在 MATLAB 命令行窗口中,创建一个存储值 18.25Simulink.Parameter 对象。

myParam = Simulink.Parameter(18.25);

表达式 18.25 以双精度浮点数据类型 double 返回数值 18.25Value 属性以双精度存储数值 18.25

使用 DataType 属性指定单精度数据类型 single

myParam.DataType = 'single';

当仿真或生成代码时,对象会将 Value 属性的值 18.25 转换为 DataType 属性指定的数据类型 single

此示例说明如何将参数对象 myParam 的值设置为其他两个变量(myVarmyOtherVar)之和。使用这种方法,当您更改自变量的值时,该软件会立即计算参数对象的新值。

创建两个自变量。

myVar = 5.2;
myOtherVar = 9.8;

创建参数对象。

myParam = Simulink.Parameter;

将参数对象的值设置为表达式 myVar + myOtherVar

myParam.Value = slexpr('myVar + myOtherVar')

当您仿真或生成代码时,表达式的计算结果为 15

版本历史记录

在 R2006a 之前推出

全部展开