目录
语法
说明
示例
获取模块参数值和模型参数值
获取根参数名称和值
获取模型参数名称和值
获取模块列表和参数值
使用模块句柄获取模块参数值
显示模型中所有模块的模块类型
获取封装参数、Simulink 对象、模块图或注释的选项列表
获取封装参数的计算值
get_param函数的功能是获取参数名称和值。
语法
value = get_param(object,parameter)
说明
value = get_param(object,parameter) 为由 object 指定的目标对象返回指定参数 parameter 的值 value。目标对象可以是模型、子系统、库、模块、信号线、端口或总线元素端口元素。
在调用此函数之前,请打开或加载相关的 Simulink® 模型、子系统或库。
示例
获取模块参数值和模型参数值
加载 vdp 模型。
load_system('vdp');
获取 Expression 模块参数的值。
BlockParameterValue = get_param('vdp/Mu','Multiplication')
BlockParameterValue =
'Element-wise(K.*u)'
获取 SolverType 模型参数的值。
SolverType = get_param('vdp','SolverType')
SolverType =
'Variable-step'
获取根参数名称和值
通过找出 Simulink 根参数名称与模型参数名称之间的区别,获取全局参数名称的列表。
RootParameterNames = fieldnames(get_param(0,'ObjectParameters'));
load_system('vdp')
ModelParameterNames = fieldnames(get_param('vdp','ObjectParameters'));
GlobalParameterNames = setdiff(RootParameterNames,ModelParameterNames)
GlobalParameterNames =
79×1 cell array
{'AccelNoncompliantBlocksRatioLimit' }
{'AutoAccelerationStepsPerBlockLimit' }
{'AutoAccelerationStepsPerCodegenLimit' }
. . .
{'CurrentSystem' }
获取全局参数的值。
GlobalParameterValue = get_param(0,'CurrentSystem')
GlobalParameterValue =
'vdp'
获取模型参数名称和值
获取 vdp 模型的模型参数列表。
load_system('vdp')
ModelParameterNames = get_param('vdp','ObjectParameters')
ModelParameterNames =
struct with fields:
Name: [1×1 struct]
Tag: [1×1 struct]
Description: [1×1 struct]
Type: [1×1 struct]
Parent: [1×1 struct]
Handle: [1×1 struct]
. . .
ZeroInternalMemoryAtStartup: [1×1 struct]
获取 vdp 模型的 ModelVersion 模型参数的当前值。
ModelParameterValue = get_param('vdp','ModelVersion')
ModelParameterValue =
'7.0'
获取模块列表和参数值
获取 sldemo_fuelsys 模型中模块的模块路径和名称列表。对于其中一个模块,获取模块对话框参数列表和模块对话框参数值。
打开 Model a Fault-Tolerant Fuel Control System 示例。
openExample('simulink_automotive/ModelingAFaultTolerantFuelControlSystemExample');
获取 sldemo_fuelsys 模型顶层中所有模块的模块路径和名称列表。
BlockPaths = get_param(gcs,'blocks')
BlockPaths =
21×1 cell array
{'Callback Button' }
{'Constant2' }
{'Constant3' }
{'Constant4' }
{'Constant5' }
{'Dashboard' }
{'EGO Fault Switch' }
{'Engine Gas Dynamics' }
{'Engine Speed' }
{'Engine Speed↵Fault Switch' }
{'Engine_Speed_Selector' }
{'MAP Fault Switch' }
{'MAP_Selector' }
{'O2_Voltage_Selector' }
{'Scope' }
{'Throttle↵Command' }
{'Throttle Angle↵Fault Switch'}
{'Throttle_Angle_Selector' }
{'To Controller' }
{'To Plant' }
{'fuel_rate_control' }
该命令输出当前系统顶层中所有模块的模块路径和名称列表。如果当前系统是子系统,该命令将输出该子系统顶层中所有模块的模块路径和名称列表。
在此示例中,当前系统为 sldemo_fuelsys,因此该命令输出 sldemo_fuelsys 系统的顶层中所有模块的模块路径和名称列表。
获取 sldemo_fuelsys 模型的所有层级中所有模块的模块路径和名称列表。
BlockPaths = find_system(gcs,'Type','Block')
BlockPaths =
188×1 cell array
{'sldemo_fuelsys/Callback Button' }
{'sldemo_fuelsys/Constant2' }
{'sldemo_fuelsys/Constant3' }
...
{'sldemo_fuelsys/fuel_rate_control/fuel_rate' }
该命令输出当前系统的顶层和当前系统包含的所有较低模型层级中所有模块的模块路径和名称列表。在此示例中,当前系统为 sldemo_fuelsys,因此输出是 sldemo_fuelsys 模型中所有模块的模块路径和名称的列表。
获取名为 RT/Vm 的 Gain 模块的模块对话框参数列表。get_param 函数中的第一个参数是模块路径和名称。从 BlockPaths 元胞数组中获取模块路径和名称。
BlockDialogParameters = get_param(BlockPaths{44},'DialogParameters')
BlockDialogParameters =
struct with fields:
Gain: [1×1 struct]
Multiplication: [1×1 struct]
ParamMin: [1×1 struct]
ParamMax: [1×1 struct]
ParamDataTypeStr: [1×1 struct]
OutMin: [1×1 struct]
OutMax: [1×1 struct]
OutDataTypeStr: [1×1 struct]
LockScale: [1×1 struct]
RndMeth: [1×1 struct]
SaturateOnIntegerOverflow: [1×1 struct]
SampleTime: [1×1 struct]
获取 Multiplication 模块参数的值。
BlockParameterValue = get_param(BlockPaths{44},'Multiplication')
BlockParameterValue =
'Element-wise(K.*u)'
使用模块句柄获取模块参数值
获取 vdp 模型中名为 Mu 的 Gain 模块的 Multiplication 模块参数值。
使用 getSimulinkBlockHandle 函数获取 vdp 模型中名为 Mu 的 Gain 模块的句柄。通过输入 'vdp/Mu' 作为输入参数来指定模型和模块名称。如果未加载 vdp 模型,则通过将 true 指定为 getSimulinkBlockHandle 函数的第二个输入参数来加载模型。
mublockhandle = getSimulinkBlockHandle('vdp/Mu',true)
mublockhandle =
5.0001
句柄包含双精度值,例如,5.0001。如果您在 MATLAB® 命令行窗口中显示句柄编号,显示画面可能不会显示该编号的所有数字。请不要尝试通过手动输入您在显示画面上看到的内容来使用此句柄编号。而要将该句柄赋给变量,并使用该变量名称指定模块。
提示
如果对同一模块多次调用 get_param,请使用模块句柄,而不要重复将完整的模块路径指定为字符向量,如 'vdp/Mu'。您可以在对 get_param 或 set_param 的后续调用中使用该模块句柄。
要获取 Multiplication 模块参数的值,请使用 get_param 函数。将模块句柄指定为第一个输入参量,将模块参数的名称指定为第二个输入参量。
BlockParameterValue = get_param(mublockhandle,'Multiplication')
BlockParameterValue =
'Element-wise(K.*u)'
显示模型中所有模块的模块类型
获取 vdp 模型的模块路径和名称列表。
load_system('vdp')
BlockPaths = find_system('vdp','Type','Block')
BlockPaths =
14×1 cell array
{'vdp/Constant' }
{'vdp/More Info' }
{'vdp/More Info/Model Info'}
{'vdp/Mu' }
{'vdp/Mux' }
{'vdp/Product' }
{'vdp/Scope' }
{'vdp/Square' }
{'vdp/Sum' }
{'vdp/Sum1' }
{'vdp/x1' }
{'vdp/x2' }
{'vdp/Out1' }
{'vdp/Out2' }
获取 vdp 模型中每个模块的 BlockType 参数值。
BlockTypes = get_param(BlockPaths,'BlockType')
BlockTypes =
14×1 cell array
{'Constant' }
{'SubSystem' }
{'SubSystem' }
{'Gain' }
{'Mux' }
{'Product' }
{'Scope' }
{'Math' }
{'Sum' }
{'Sum' }
{'Integrator'}
{'Integrator'}
{'Outport' }
{'Outport' }
获取封装参数、Simulink 对象、模块图或注释的选项列表
可以使用 get_param 函数和关键字 options 检索参数、Simulink 对象、模块图或注释的选项列表。
获取封装参数的选项列表。以 ACSystem 模型中的封装 Subsystem 模块为例。获取 Subsystem 模块参数 Show port labels 的选项列表。
openExample('simulink_masking/DesignAMaskDialogBoxExample')
get_param('ACSystem/AC System','options@showportlabels')
ans =
1×4 cell array
{'none'} {'FromPortIcon'} {'FromPortBlockName'} {'SignalName'}
获取模块参数的选项列表。例如,获取 Inport 模块的 Icon display 参数的选项列表。
get_param('ACSystem/In1','options@icondisplay')
ans =
1×3 cell array
{'Signal name'} {'Port number'} {'Port number and si…'}
获取封装参数的计算值
可以使用带关键字 value 的 get_param 函数来访问封装模块参数的计算值。
以 ACSystem 模型中的封装 Subsystem 模块为例。获取名为 Room Width (W) 的封装上 edit 参数的计算值。
openExample('simulink_masking/DesignAMaskDialogBoxExample')
get_param('ACSystem/AC System','value@W')
ans =
133
检索计算值的选项仅限于封装参数。
通过双击 AC System 模块打开该模块的封装。Room Width (W) 参数的值与使用 get_param 函数得到的值相同。
如图所示:
参数说明
object — 对象或根的名称、路径或句柄
对象或根的名称、路径或句柄,指定为字符向量、字符向量元胞数组、字符串数组、数值标量或 0。
如何指定目标对象取决于其类型。
-
模型 - 模型名称或句柄。
-
子系统 - 系统名称或句柄。
-
库 - 库名称或句柄。
-
模块 - 模块路径或句柄。
-
信号线 - 信号线句柄。
-
端口 - 端口句柄。
-
总线元素端口元素 - 具有元素标签的模型组件的模块路径。元素可以是端口的任何元素,例如顶层总线、嵌套总线、信号或消息。
要用一个公共参数指定多个对象,请使用字符向量元胞数组、字符串数组或句柄数组。所有指定的对象都必须具有指定的参数,否则该函数将返回错误。
指定0以获取根参数名称,包括当前 Simulink 会话的全局参数和模型参数。
-
全局参数包括编辑器预设项和 Simulink Coder™ 参数。
-
模型参数包括配置参数、Simulink Coder 参数和 Simulink Code Inspector™ 参数。
对象或根的名称、路径或句柄,指定为字符向量、字符向量元胞数组、字符串数组、数值标量或 0。
提示
-
如果对同一模块多次调用 get_param,请用数值句柄指定该模块。这种方法比对 get_param 使用完整模块路径更高效。使用 getSimulinkBlockHandle 获取模块句柄。
-
不要尝试手动指定句柄的数字,例如 5.007,因为通常需要指定的位数多于 MATLAB 显示的位数。要将句柄赋给变量并使用该变量名称。
parameter — 参数、属性或特性名称
参数、属性或特性名称,指定为字符向量或字符串标量。有些名称区分大小写。
下表显示特例。
指定的参数 | 结果 |
---|---|
'ObjectParameters' | 结构体数组中作为单独字段的指定对象的参数名称。 |
'DialogParameters' | 结构体数组中作为单独字段的模块对话框参数名称。如果模块有封装,则函数返回封装参数。 |
有关参数、属性或特性的信息,请参阅对应参考页上的编程使用信息。例如:
-
模型 - 参考配置参数参考页。
-
模块 - 参考通用模块属性和模块参考页。
-
端口 - 参考信号属性工具参考页。
-
总线元素端口元素 - 参考 In Bus Element 和 Out Bus Element 模块参考页。
value — 参数值
参数值,以参数类型确定的格式返回。如果您指定多个对象,则输出是元胞数组。
下表显示特例。
指定的参数 | 结果 |
---|---|
'ObjectParameters' | 结构体数组中作为单独字段的指定对象的参数名称。 |
'DialogParameters' | 结构体数组中作为单独字段的模块对话框参数名称。如果模块有封装,则函数返回封装参数。 |
如果通过指定 get_param(0,'ObjectParameters') 来获取根参数,则输出 value 是一个结构体数组,根参数名称在结构体中为单独的字段。每个参数字段都是一个结构体,其中包含以下字段:
-
类型 - 参数类型值包括 'boolean'、'string'、'int'、'real'、'point'、'rectangle'、'matrix'、'enum'、'ports' 或 'list'。
-
枚举 - 枚举字符向量值的元胞数组,仅适用于 'enum' 参数类型。
-
属性 - 定义参数属性的字符向量元胞数组。值包括 'read-write'、'read-only'、'read-only-if-compiled'、'write-only'、'dont-eval'、 'always-save'、'never-save'、'nondirty' 或 'simulation'。