Simulink.Parameter
存储、共享和配置参数值
说明
创建 Simulink.Parameter
对象以设置模型中的一个或多个模块参数(例如 Gain 模块的增益参数)的值。您在工作区或数据字典中创建对象。在对象中设置参数值,然后从模块中引用对象。
使用 Simulink.Parameter
对象可以:
在多个模块参数之间共享一个值。
表示工程常量或可调标定参数。
将参数值与其数据类型和其他属性分离。
配置用于代码生成的参数数据。
对象的 Value
属性存储参数值。要在模型中使用对象,请将模块参数的值设置为包含对象名称的表达式。从表达式中省略 Value
属性。有关详细信息,请参阅使用参数对象。
有关模块参数的详细信息,请参阅设置模块参数值和生成的代码如何存储内部信号、状态和参数数据 (Simulink Coder)。
要将 Simulink.Parameter
对象配置为模型参量,该对象必须位于模型工作区中。在模型资源管理器等对话框中,为参量对象选择参量。有关详细信息,请参阅为引用模型中的模块参数配置特定于实例的值。
创建对象
通过以下方式创建 Simulink.Parameter
对象:
直接从模块对话框或属性检查器创建。请参阅创建、编辑和管理工作区变量。
使用模型数据编辑器创建。检查参数选项卡。右键点击包含变量的行,并从上下文菜单中选择转换为参数对象。
使用模型资源管理器创建。请参阅从内置数据类包 Simulink 创建数据对象。
使用
Simulink.Parameter
函数创建,如下所述。
属性
要在模块参数中使用的值,指定为以下任一有效值:
数值
布尔值
枚举类型的实例
结构体
标量或数组
数学表达式(请参阅使用数学表达式设置变量值)
如果使用 Simulink.Parameter
对象来设置可重用引用模型中的模块参数值,则只要在模型引用层次结构父级的某个位置提供显式值,就可以在该对象的值保留为空(Value
设置为 []
)的情况下将该模型作为引用模型进行编译和仿真。在这种情况下,您无法直接仿真模型。当该值为空时,您必须为该对象提供 DataType
和 Dimensions
。虽然您已指定空值,该软件仍会通过使用以下值之一来合成 Value
:
Max
Min
(如果未指定Max
)1
(如果未指定Min
或Max
)
您还可以使用 MATLAB® 语法来指定值。
示例表达式 | 描述 |
---|---|
15.23 | 指定标量值 |
[3 4; 9 8] | 指定矩阵 |
3+2i | 指定复数值 |
"Mystring" | 指定字符串值 |
struct('A',20,'B',5) | 指定具有两个字段 将模块参数组织为结构体(请参阅在结构体中组织相关的模块参数定义)或初始化总线中的信号元素(请参阅Specify Initial Conditions for Bus Elements)。 |
slexpr('myVar + myOtherVar') | 指定表达式 myVar + myOtherVar ,其中 myVar 和 myOtherVar 是其他 MATLAB 变量或参数对象。软件会保留对象与变量之间的这种数学关系。 |
要使用 Simulink.Parameter
对象存储特定数值数据类型的值,请使用 Value
属性指定理想值,使用 DataType
属性控制数据类型。
如果您使用定型的表达式(如 single(32.5)
)来设置 Value
,DataType
属性将改变以反映新类型。最佳做法是使用非定型表达式,从而通过重复量化或数据类型饱和来避免累积数值错误,尤其是对于定点数据类型。
如果您将 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 数据代码接口配置 (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.AliasType
或 Simulink.NumericType
对象在您的模型中创建和共享自定义数据类型,请指定对象的名称。
要指定枚举的数据类型,请在 Enum:
之后使用类型的名称。例如,指定 'Enum: myEnumType'
。
要将 Simulink.ValueType
对象指定为数据类型,请在 ValueType:
之后使用对象的名称。例如,指定 'ValueType: myValueType'
。
在对象的 Value
属性中存储结构体或结构体数组时,对象会将 DataType
属性设置为 'struct'
。要将 Simulink.Bus
对象指定为数据类型,请在 Bus:
之后使用总线对象的名称。例如,指定 'Bus: myBusObject'
。
如果您将 Simulink.Parameter
对象 Value
设置为字符串,请注意 Simulink 字符串限制中的限制。
当您指定 Simulink.ValueType
或 Simulink.Bus
对象作为数据类型时,将忽略 Simulink.Parameter
对象的某些属性。例如,忽略 Simulink.Parameter
对象的 Min
、Max
和 Unit
属性。软件改用 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.ValueType
或Simulink.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.ValueType
或Simulink.Bus
对象。软件改用
Simulink.ValueType
对象或Simulink.Bus
对象中的Simulink.BusElement
对象指定的最大值。
提示
对于具有定点数据类型的参数对象,对话框显示存储的最大整数属性,这是参数可以具有的最大值,指定为存储整数值。该值派生自真实值最大值。
数据类型: double
参数值的物理单位,指定为说明有效单位的字符向量。有关详细信息,请参阅 Simulink 模型中的单位指定。
示例: 'degC'
依赖关系
当 DataType
指定 Simulink.ValueType
或 Simulink.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.ValueType
或Simulink.Bus
对象。软件改用
Simulink.ValueType
对象或Simulink.Bus
对象中的Simulink.BusElement
对象指定的复/实性。
存储在 Value
属性中的值的维度,指定为行向量、字符向量或字符串标量。
当设置对象的 Value
属性时,对象将 Dimensions
属性的值设置为 double
行向量。该向量与 size
函数返回的向量相同。
如果要将对象配置为模型参量,并打算为父模型引用层次结构中其他位置的对象提供值,可以将 Value
属性留空(设置为 []
),并显式设置 Dimensions
和 Data Type
属性。请参阅为引用模型中的模块参数配置特定于实例的值。
要使用符号维度,请指定字符向量。请参阅在生成的代码中实现数组大小的符号维度 (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;
使用 Min
和 Max
属性指定参数可采用的最小值和最大值。
myParam.Min = 10.11; myParam.Max = 25.27;
打开一个新的 Simulink 模型。添加 Gain 模块,并将其增益参数设置为 myParam
。在仿真期间,增益参数使用值 15.23
。
在 MATLAB 命令行窗口中,创建一个存储值 2.52
的 Simulink.Parameter
对象。
myParam = Simulink.Parameter(2.52);
通过访问该对象的 Value
属性来更改值。这种方法会保留该对象的其他属性的值。
myParam.Value = 1.13;
为减少模型维护,可以将 DataType
属性保留为默认值 auto
。参数对象从使用该对象的模块参数中获得数据类型。
为降低在您更改模型中的信号数据类型和其他数据类型时数据类型发生变化的风险,可以为参数对象显式指定数据类型。例如,在生成将参数数据导出到自定义代码的代码时,为对象显式指定一个数据类型。
在 MATLAB 命令行窗口中,创建一个存储值 18.25
的 Simulink.Parameter
对象。
myParam = Simulink.Parameter(18.25);
表达式 18.25
以双精度浮点数据类型 double
返回数值 18.25
。Value
属性以双精度存储数值 18.25
。
使用 DataType
属性指定单精度数据类型 single
。
myParam.DataType = 'single';
当仿真或生成代码时,对象会将 Value
属性的值 18.25
转换为 DataType
属性指定的数据类型 single
。
此示例说明如何将参数对象 myParam
的值设置为其他两个变量(myVar
和 myOtherVar
)之和。使用这种方法,当您更改自变量的值时,该软件会立即计算参数对象的新值。
创建两个自变量。
myVar = 5.2; myOtherVar = 9.8;
创建参数对象。
myParam = Simulink.Parameter;
将参数对象的值设置为表达式 myVar + myOtherVar
。
myParam.Value = slexpr('myVar + myOtherVar')
当您仿真或生成代码时,表达式的计算结果为 15
。
版本历史记录
在 R2006a 之前推出
另请参阅
Simulink.Signal
| Simulink.CoderInfo
| AUTOSAR.Parameter
(AUTOSAR Blockset) | Simulink.LookupTable
| Simulink.Breakpoint
| Simulink.AliasType
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)