get_param
R2026b获取参数名称和值
描述
为目标对象返回指定参数的值。例如,您可以使用此语法来获取 Sine Wave 模块的振幅值。目标对象可以是模型、子系统、库、模块、信号线、端口,或指定为句柄或路径的总线元素端口元素。有关如何获取句柄和路径的信息,请参阅Get Handles and Paths。value = get_param(Object,Parameter)
要查询 Simulink® 模型、子系统或库或其内容,必须加载或打开该模型、子系统或库。
示例
假设您有一个名为 myModel 的已加载模型,它包含一个名为 mySubsystem 的 Subsystem 模块。该子系统包含名为 myBlock 的 Gain 模块。获取增益值。
要获取该值,您需要两个输入:
要查询其参数值的模块的句柄或路径
有关如何获取句柄和路径的信息,请参阅Get Handles and Paths。
要查询其值的参数的编程名称
有关如何获取参数名称的信息,请参阅以编程方式指定模块参数和属性。
在此示例中,您有足够的信息来获取模块路径。模块路径是从模型的根到该模块的模型层次结构路径,层次结构中的每步都用正斜杠分隔。将模块路径存储在变量中。
blockPath = "myModel/mySubsystem/myBlock";获取要查询的参数的编程名称。一种方法是查看模块的文档。在模块的文档页上,在参数部分中找到该参数。然后,查看编程用法部分以获取编程名称。
对于此示例,请查看此页以获取参数名称:Gain。存储增益值的参数的编程名称是 Gain。
获取参数值。
gainValue = get_param(blockPath,"Gain");如果您要对模块运行更多运算,请考虑使用其句柄而不是模块路径。要获取模块路径的句柄,请使用 getSimulinkBlockHandle 函数。
h = getSimulinkBlockHandle(blockPath);
使用句柄获取参数值。
gainValue = get_param(h,"Gain");假设您有一个已加载的模型,它具有包含数百个模块的复杂层次结构。模型的句柄存储在变量 h 中。获取名称包含关键短语 Low-Pass Filter 的所有 Transfer Fcn 模块的传递函数系数。
要获取系数的值,您需要两个输入:
要查询其参数值的每个模块的句柄或路径
有关如何获取句柄和路径的信息,请参阅Get Handles and Paths。
要查询其值的参数的编程名称
有关如何获取参数名称的信息,请参阅以编程方式指定模块参数和属性。
获取名称包含关键短语 Low-Pass Filter 的 Transfer Fcn 模块的句柄。使用函数 find_system。
hBlocks = find_system(h,Regexp="on",CaseSensitive="on",Type="Block",BlockType="TransferFcn",Name=".*Low-Pass Filter.*")
获取存储传递函数系数的参数的编程名称。打开 Transfer Fcn 模块的文档页:Transfer Fcn。在参数部分中找到您要查询的参数。然后,查看编程用法部分以获取编程名称。分子系数存储在编程名称为 Numerator 的参数中,分母系数存储在编程名称为 Denominator 的参数中。
获取系数值。
numeratorCoeffs = get_param(hBlocks,"Numerator"); denominatorCoeffs = get_param(hBlocks,"Denominator");
假设您有两个已加载的模型 myModel1 和 myModel2。检查这两个模型是否具有相同的消息参数值。
获取模型参数列表。
params = get_param("myModel1","ObjectParameters");
该函数返回一个结构体。创建一个包含模型参数名称的元胞数组。
paramNames = fieldnames(params);
消息参数以缩写 Msg 结尾。获取包含缩写 Msg 的所有模型参数名称。
msgNames = paramNames(contains(paramNames,'Msg'));比较两个模型的消息参数值。显示具有不同值的参数的名称。
mdl = ["myModel1";"myModel2"]; for i=1:length(msgNames) val = get_param(mdl,msgNames{i}); if(length(unique(val))~=1) disp(msgNames{i}) end end
您可以使用 get_param 函数查询的某些参数具有有限数量的允许值。例如,Sum 模块的图标形状参数只能有两个值之一:rectangular 或 round。要获取参数的可用值选项的列表,请像获取参数值一样使用 get_param 函数,但在您在函数输入中指定的参数名称前添加前缀 options@。
假设您有已加载的名为 myModel 的模型。该模型包含名为 mySquareBlock 的 Square 模块、名为 mySubsystemBlock 的带封装的 Subsystem 模块和注解。
获取 Square 模块的 Output signal type 参数的选项列表。
funcoptions = get_param("myModel/mySquareBlock","options@OutputSignalType")
funcoptions = 1×3 cell
{'auto'} {'real'} {'complex'}
获取 Subsystem 模块的封装子系统参数 Read/Write permissions 的选项列表。
get_param("myModel/mySubsystemBlock","options@Permissions")
ans = 1×3 cell
{'ReadWrite'} {'ReadOnly'} {'NoReadOrWrite'}
获取名为 AlgebraicLoopMsg 的模型参数的选项列表。
get_param("myModel","options@AlgebraicLoopMsg")
ans = 1×3 cell
{'none'} {'warning'} {'error'}
获取注解的水平对齐的选项列表。为此,请获取注解的句柄。
h = find_system(gcs,FindAll="on",Type="annotation");
然后,获取选项列表。
get_param(h,"options@HorizontalAlignment")ans = 1×3 cell
{'left'} {'center'} {'right'}
要获取设置为变量的封装参数的值,请使用 get_param 函数。在您在函数输入中指定的参数名称前添加前缀 value@。
注意
对于使用字符串作为类型选项(无值)的弹出和单选按钮封装参数,计算值是选定选项的索引。
假设您有一个名为 myModel 的模型,它包含一个名为 myBlock 的封装 Subsystem 模块。该封装具有参数名称为 magnitude 的滑块。该参数的值设置为基础变量。获取该变量的名称和值。
首先获取名称。为此,请使用 get_param 函数获取 magnitude 参数的值。该参数设置为变量,因此查询参数值将返回变量名称。
blockPath = "myModel/myBlock"; varName = get_param(blockPath,"magnitude");
然后,获取变量值。使用与之前相同的命令,但在参数名称前添加前缀 value@。
varValue = get_param(blockPath,"value@magnitude");假设您有已加载的名为 myModel 的模型。获取全局参数名称列表。然后,获取名为 CurrentSystem 的全局参数的值。
要获取全局参数名称的列表,请通过找出 Simulink 根参数名称与模型参数名称之间的区别。
获取模型参数的名称。
modelParamNames = fieldnames(get_param("myModel","ObjectParameters"));
获取 Simulink 根参数名称。
rootParamNames = fieldnames(get_param(0,"ObjectParameters"));获取全局参数的名称。
globalParamNames = setdiff(rootParamNames,modelParamNames);
获取名为 CurrentSystem 的全局参数的值。
globalparamval = get_param(0,"CurrentSystem")globalparamval = 'myModel'
输入参数
要查询的目标对象(或根)的句柄、名称或路径。您指定目标对象的方式取决于目标对象的类型。
模型 - 模型名称或句柄。
子系统 - 系统名称或句柄。
库 - 库名称或句柄。
模块 - 模块路径或句柄。
信号线 - 信号线句柄。
端口 - 端口句柄。
端口元素 - 由模型名称或子系统模块路径、正斜杠以及端口名称或总线元素路径组成的路径。对于总线元素端口,总线元素路径提供从顶层总线到目标元素的层次结构,用点分隔层次结构中的每个名称。
有关如何获取句柄和路径的信息,请参阅Get Handles and Paths。将句柄格式化为数值标量或数值向量。将名称和路径格式化为字符串、字符串数组、字符向量或字符向量元胞数组。
指定 0 以获取根参数名称,包括当前 Simulink 会话的全局参数和模型参数。
全局参数包括编辑器预设项和 Simulink Coder™ 参数。
模型参数包括配置参数、Simulink Coder 参数和 Simulink Code Inspector™ 参数。
示例: "myModel/mySubsystem/myBlock"
数据类型: double | array of doubles | string | string array | character vector | cell array of character vectors
参数、属性或特性名称,指定为字符串或字符向量。有些名称区分大小写。
下表显示特例。
| 参数 | 值 |
|---|---|
ObjectParameters | 结构体数组中作为单独字段的指定对象的参数名称。 |
DialogParameters | 结构体数组中作为单独字段的模块对话框参数名称。如果模块有封装,则函数返回封装参数。 |
ParameterValuesStruct | 包含任何封装模块的参数名称及其当前值的结构体。 |
有关参数、属性或特性的信息,请参阅对应文档页上的编程用法信息。例如:
模型 - 请参阅配置参数参考页。
模块 - 请参阅通用模块属性和模块参考页。
端口 - 请参阅信号属性工具参考页。
端口元素 - 请参阅 In Bus Element 和 Out Bus Element 模块参考页。
示例: "ObjectParameters"
示例: "Solver"
示例: "SimulationCommand"
数据类型: string | character vector
输出参量
参数值,以参数类型确定的格式返回。如果您指定多个对象,则输出是元胞数组。
下表显示特例。
| 参数 | 值 |
|---|---|
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'。
版本历史记录
在 R2006a 之前推出
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)