Main Content

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

Simulink.Parameter

存储、共享和配置参数值

说明

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

使用 Simulink.Parameter 对象可以:

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

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

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

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

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

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

创建对象

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

说明

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

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

属性

全部展开

有关 Simulink.Parameter 对象的属性对话框中各项属性的信息,请参阅 Simulink.Parameter Property Dialog Box

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

此属性是只读的。请修改此属性包含的 Simulink.CoderInfo 对象的属性作为代替。

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

参数值的数值复/实性,返回为 'real'(如果值为实数)或 'complex'(如果值为复数)。Simulink 确定您在 Value 属性中指定的参数值的复/实性。此属性是只读的。

数据类型: char

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

如果您指定默认设置 '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'

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

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

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

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

示例: 'auto'

示例: 'int8'

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

示例: 'myAliasTypeObject'

示例: 'Enum: myEnumType'

示例: 'Bus: myBusObject'

数据类型: char

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

如果您有 Embedded Coder® 许可证,您可以将此说明配置为在生成的代码中显示为注释。请参阅Simulink data object descriptions (Embedded Coder)

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

数据类型: char

Value 属性中存储的值的维度,以行向量形式返回或指定为字符向量。

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

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

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

示例: [1 3]

示例: '[1 myDimParam]'

数据类型: double | char

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

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

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

如果在 Value 属性中存储结构体,对象将忽略 Max 属性。请改用 Simulink.Bus 对象作为参数对象的数据类型,并通过使用总线对象的元素来为每个字段指定最大值。请参阅通过创建参数对象来控制字段数据类型和特征

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

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

示例: 5.32

数据类型: double

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

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

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

如果在 Value 属性中存储结构体,对象将忽略 Min 属性。请改用 Simulink.Bus 对象作为参数对象的数据类型,并通过使用总线对象的元素来为每个字段指定最小值。请参阅通过创建参数对象来控制字段数据类型和特征

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

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

示例: -0.92

数据类型: double

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

示例: 'degC'

数据类型: char

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

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

  • Max

  • Min(如果未指定 Max)。

  • 1(如果未指定 MinMax)。

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

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

示例表达式说明
15.23

指定标量值

[3 4; 9 8]

指定矩阵

3+2i

指定复数值

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

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

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

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

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

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

示例: 3.15

示例: 1.2 + 3.2i

示例: true

示例: myEnumType.myEnumValue

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

示例: slexpr('myVar + myOtherVar')

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

示例

使用参数对象设置 Gain 参数的值

  1. 在命令提示符下,创建一个 Simulink.Parameter 对象。

    myParam = Simulink.Parameter;
    

  2. Value 属性指定一个数值。

    myParam.Value = 15.23;

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

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

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

更改参数对象存储的值

  1. 在命令提示符下,创建一个存储值 2.52Simulink.Parameter 对象。

    myParam = Simulink.Parameter(2.52);

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

    myParam.Value = 1.13;

创建具有特定数值数据类型的参数对象

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

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

  1. 在 MATLAB 命令提示符下,创建一个存储值 18.25Simulink.Parameter 对象。

    myParam = Simulink.Parameter(18.25);

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

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

    myParam.DataType = 'single';

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

将参数值设置为数学表达式

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

  1. 创建两个自变量。

    myVar = 5.2;
    myOtherVar = 9.8;

  2. 创建参数对象。

    myParam = Simulink.Parameter;

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

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

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

在 R2006a 之前推出