get_param
获取参数名称和值
说明
示例
使用模块路径获取模块参数值
您可以使用具有以下输入参量的 get_param
函数来获取模块参数的值:
模块句柄或包括模块名称的完整模块路径,例如
'myModel/mySubsystem/myblock'
参数名称
在此示例中,您将获得由名为 Alpha-sensor Low-pass Filter
的 Transfer Function 模块指定的传递函数系数。
该模块位于
slexAircraftExample
模型的Controller
子系统中。传递函数分子的系数存储在
Numerator
参数中。传递函数分母的系数存储在Denominator
参数中。
打开示例。然后,加载 slexAircraftExample
模型。
mdl = 'slexAircraftExample';
load_system(mdl)
获得传递函数系数。
path = [mdl,'/Controller/Alpha-sensor Low-pass Filter']; num = get_param(path,'Numerator')
num = '[1]'
denom = get_param(path,'Denominator')
denom = '[Tal,1]'
当模块路径很长,并且您要获取多个参数时,可以考虑使用模块句柄。
使用模块句柄获取模块参数值
您可以使用具有以下输入参量的 get_param
函数来获取模块参数的值:
模块句柄或包括模块名称的完整模块路径,例如
'myModel/mySubsystem/myblock'
参数名称
在此示例中,您将获得由名为 Alpha-sensor Low-pass Filter
的 Transfer Function 模块指定的传递函数系数。
该模块位于
slexAircraftExample
模型的Controller
子系统中。传递函数分子的系数存储在
Numerator
参数中。传递函数分母的系数存储在Denominator
参数中。
打开示例。然后,使用 getSimulinkBlockHandle
函数获得模块句柄。要同时获取模块句柄和加载模型,请将 getSimulinkBlockHandle
函数的第二个参量指定为 true
。
path = 'slexAircraftExample/Controller/Alpha-sensor Low-pass Filter';
h = getSimulinkBlockHandle(path,true)
h = 489.0011
要获取参数值,请使用句柄指定模块。不要手动输入句柄的值。舍入导致 getSimulinkBlockHandle
函数在 MATLAB® 命令行窗口中输出的值可能与句柄值不匹配。在这种情况下,请将句柄赋给变量,然后使用变量名称来指定模块。在此示例中,值赋给名为 h
的变量。
num = get_param(h,'Numerator')
num = '[1]'
denom = get_param(h,'Denominator')
denom = '[Tal,1]'
获取模块参数名称
您可以使用具有以下输入参量的 get_param
函数来获取模块参数的值:
模块句柄或包括模块名称的完整模块路径,例如
'myModel/mySubsystem/myblock'
参数名称
此示例说明如何获取参数名称。
假设您要获取 slexAircraftExample
模型中名为 Alpha-sensor Low-pass Filter
的 Transfer Function 模块的传递函数系数。为此,您必须获取存储传递函数系数的参数的名称。
打开示例。
获取名为 Alpha-sensor Low-pass Filter
的 Transfer Function 模块的句柄。要同时获取模块句柄和加载模型,请将 getSimulinkBlockHandle
函数的第二个参量指定为 true
。
path = 'slexAircraftExample/Controller/Alpha-sensor Low-pass Filter';
h = getSimulinkBlockHandle(path,true);
使用 get_param
函数获取名为 Alpha-sensor Low-pass Filter
的 Transfer Function 模块的所有模块参数的名称。
get_param(h,'DialogParameters')
ans = struct with fields:
Numerator: [1x1 struct]
Denominator: [1x1 struct]
ParameterTunability: [1x1 struct]
AbsoluteTolerance: [1x1 struct]
ContinuousStateAttributes: [1x1 struct]
输出显示传递函数系数由 Numerator
参数和 Denominator
参数指定。使用这些参数名称可获取传递函数的分子和分母中的系数。
num = get_param(h,'Numerator'); denom = get_param(h,'Denominator')
denom = '[Tal,1]'
获取模块路径和名称
您可以使用具有以下输入参量的 get_param
函数来获取模块参数的值:
模块句柄或包括模块名称的完整模块路径,例如
'myModel/mySubsystem/myblock'
参数名称
此示例说明如何获取完整模块路径和名称。
获取路径和名称
假设您要获取 slexAircraftExample
模型中充当滤波器的所有 Transfer Function 模块的传递函数系数。为此,您必须获取模型中充当滤波器的所有 Transfer Function 模块的名称和路径。
打开示例。然后,加载 slexAircraftExample
模型。
mdl = 'slexAircraftExample';
load_system(mdl)
使用 find_system
函数获取 slexAircraftExample
模型中所有模块的路径。
paths = find_system(mdl,'Type','Block');
当没有指定搜索深度时,find_system
函数从模型层次结构的指定级别以及指定级别包含的所有更低级别中查找所有模块。由于 slexAircraftExample
是模型层次结构的顶层,因此,该命令将返回模型层次结构中每个级别的所有模块。
如果您知道滤波器在哪个子系统中,则也可以使用 get_param
函数。get_param
函数只返回位于模型层次结构的指定级别的模块的路径,而不返回位于指定级别包含的任何子系统中的模块的路径。在此示例中,滤波器位于 Controller
子系统的顶层。
paths=get_param(mdl+'/Controller','blocks');
按关键字过滤路径和名称
在 slexAircraftExample
模型中,充当滤波器的 Transfer Function 模块在其模块名称中包含单词 filter
或 Filter
。一旦有了模块路径列表,就可以获取包含单词 filter
或 Filter
的模块路径。
filterpaths = paths(contains(paths,{'Filter','filter'}));
获取模块参数值
使用模块名称可获取传递函数系数。例如,使用以下命令获取 Alpha-sensor Low-Pass
滤波器的传递函数系数。
num = get_param(filterpaths{1},'Numerator'); denom = get_param(filterpaths{1},'Denominator')
denom = '[Tal,1]'
显示模块类型
获取 vdp
模型中的模块的类型列表。
打开示例。然后,加载 vdp
模型。
load_system('vdp')
获取 vdp
模型的模块路径和名称列表。
blockpaths = find_system('vdp','Type','Block');
对于 vdp
模型中的每个模块,获取 BlockType
参数的值。
blocktypes = get_param(blockpaths,'BlockType')
blocktypes = 12x1 cell
{'CustomCallbackButton'}
{'Constant' }
{'SubSystem' }
{'Product' }
{'Scope' }
{'Math' }
{'Sum' }
{'Sum' }
{'Integrator' }
{'Integrator' }
{'Outport' }
{'Outport' }
获取模型参数值
您可以使用具有以下输入参量的 get_param
函数来获取模型参数的值:
模型名称
模型参数名称
IntegerOverflowMsg
参数的值指示模型如何处理整数溢出。该模型可以不输出任何消息、警告消息或错误消息。
假设您要比较两个模型的 IntegerOverflowMsg
参数的值。
打开示例。然后,加载 vdp
和 f14
模型。
load_system({'vdp','f14'})
获取 vdp
和 f14
模型的 IntegerOverflowMsg
参数的值。
vdpval = get_param('vdp','IntegerOverflowMsg'); f14val = get_param('f14','IntegerOverflowMsg');
当发生整数溢出时,vdp
模型输出警告,而 f14
模型不输出任何消息。
使用 strcmp
函数比较两个参数值。
strcmp(vdpval,f14val)
ans = logical
0
strcmp
函数输出 0
,这表明这两个模型的 IntegerOverflowMsg
参数的值不同。
获取模型参数名称
您可以使用具有以下输入参量的 get_param
函数来获取模型参数的值:
模型名称
模型参数名称
假设您要比较两个模型的消息参数值,以确保在无消息、有警告消息和有错误消息的情况下处理的一致性。但是,您并不知道所有消息参数的名称。
打开示例。然后,加载 vdp
和 f14
模型。
load_system({'vdp','f14'})
获取所有模型参数的列表。
params = get_param('vdp','ObjectParameters');
该函数返回一个结构体。创建一个包含模型参数名称的元胞数组。
names = fieldnames(params);
消息参数以缩写 Msg
结尾。获取包含缩写 Msg
的所有模型参数名称。
msgnames = names(contains(names,'Msg'));
比较 vdp
和 f14
模型的消息参数值。输出具有不同值的参数的名称。
vdpval = cell(1,length(msgnames)); f14val = vdpval; for i=1:length(msgnames) vdpVal{i} = get_param('vdp',msgnames{i}); f14Val{i} = get_param('f14',msgnames{i}); if(strcmp(vdpVal{i},f14Val{i})<1) disp(msgnames{i}) end end
IntegerOverflowMsg IntegerSaturationMsg
两个消息参数具有不同的值。
获取参数值和对象属性值的选项
要获取以下任何项的选项列表,请使用 get_param
函数和关键字 options
:
模块参数
模型参数
对象属性,例如注释的水平对齐选项
此示例说明如何获取模块参数、封装参数和模型参数的选项列表。
获取模块参数的选项列表
打开示例。然后,加载 vdp
模型。
load_system('vdp')
获取 Square 模块的 Output signal type
参数的选项列表。
funcoptions = get_param('vdp/Square','options@OutputSignalType')
funcoptions = 1x3 cell
{'auto'} {'real'} {'complex'}
获取封装子系统参数的选项列表
获取封装 Subsystem 模块 Mu
的 Read/Write permissions
参数的选项列表。
get_param('vdp/Mu','options@Permissions')
ans = 1x3 cell
{'ReadWrite'} {'ReadOnly'} {'NoReadOrWrite'}
获取模型参数的选项列表
获取名为 AlgebraicLoopMsg
的模型参数的选项列表。
get_param('vdp','options@AlgebraicLoopMsg')
ans = 1x3 cell
{'none'} {'warning'} {'error'}
获取注释的选项列表
在 vdp
模型中查找注释。
h = find_system(gcs,'FindAll','on','Type','annotation');
输出与矩阵 h
中的句柄对应的注释文本。
get_param(h,'PlainText')
ans = 3x1 cell
{'Copyright 2004-2022 The MathWorks, Inc.'}
{'Van der Pol Equation' }
{'x'' - µ(1-x^2) x' + x = 0' }
获取标题注释 'Van der Pol Equation'
的水平对齐的选项列表。
get_param(h(2),'options@HorizontalAlignment')
ans = 1x3 cell
{'left'} {'center'} {'right'}
获取封装参数的值
您可以使用带关键字 value
的 get_param
函数来访问封装模块参数的值。
打开示例。然后,打开 vdp
模型。
open_system('vdp')
获取封装 Subsystem 模块 Mu
的 gain
参数的值。
get_param('vdp/Mu','value@gain')
ans = 1
在模型中,双击模块。
在封装上,移动用于更改 gain
参数的滑块。
再次获取 gain
参数的值。
get_param('vdp/Mu','value@gain')
ans = 1
获取根参数名称和值
获取全局参数的名称和值。
获取全局参数名称的列表
通过找出 Simulink® 根参数与模型参数名称之间的区别,获取全局参数名称的列表。
打开示例。然后,加载 vdp
模型。
load_system('vdp')
获取所有模型参数的名称。
modelparamnames = fieldnames(get_param('vdp','ObjectParameters'));
获取 Simulink 根参数名称的列表。
rootparamnames = fieldnames(get_param(0,'ObjectParameters'));
通过查看根参数名称列表和模型参数名称列表之间的差异来获取全局参数的名称。
globalparamnames = setdiff(rootparamnames,modelparamnames);
获取全局参数值
获取全局参数的值。
globalparamval = get_param(0,'CurrentSystem')
globalparamval = 'vdp'
输入参数
object
— 对象或根的名称、路径或句柄
字符向量 | 字符向量元胞数组 | 字符串数组 | 数值标量 | 0
对象或根的名称、路径或句柄,指定为字符向量、字符向量元胞数组、字符串数组、数值标量或 0
。
如何指定目标对象取决于其类型。
模型 - 模型名称或句柄。
子系统 - 系统名称或句柄。
库 - 库名称或句柄。
模块 - 模块路径或句柄。
信号线 - 信号线句柄。
端口 - 端口句柄。
总线元素端口元素 - 具有元素标签的模型组件的模块路径。元素可以是端口的任何元素,例如顶层总线、嵌套总线、信号或消息。
要用一个公共参数指定多个对象,请使用字符向量元胞数组、字符串数组或句柄数组。所有指定的对象都必须具有指定的参数,否则该函数将返回错误。
指定 0
以获取根参数名称,包括当前 Simulink 会话的全局参数和模型参数。
全局参数包括编辑器预设项和 Simulink Coder™ 参数。
模型参数包括配置参数、Simulink Coder 参数和 Simulink Code Inspector™ 参数。
示例: 'vdp/Mu'
示例: 'mymodel/Subsystem1/Out1.nonsinusoidal.saw'
提示
如果对同一模块多次调用
get_param
,请用数值句柄指定该模块。这种方法比对get_param
使用完整模块路径更高效。使用getSimulinkBlockHandle
获取模块句柄。不要尝试手动指定句柄的数字,例如
5.007
,因为您通常需要指定的位数多于 MATLAB® 显示的位数。要将句柄赋给变量并使用该变量名称。
数据类型: char
| string
| double
parameter
— 参数、属性或特性名称
字符向量 | 字符串标量
参数、属性或特性名称,指定为字符向量或字符串标量。有些名称区分大小写。
下表显示特例。
指定的参数 | 结果 |
---|---|
'ObjectParameters' | 结构体数组中作为单独字段的指定对象的参数名称。 |
'DialogParameters' | 结构体数组中作为单独字段的模块对话框参数名称。如果模块有封装,则函数返回封装参数。 |
有关参数、属性或特性的信息,请参阅对应参考页上的编程使用信息。例如:
模型 - 请参阅配置参数参考页。
模块 - 请参阅通用模块属性和模块参考页。
端口 - 请参阅信号属性工具参考页。
总线元素端口元素 - 请参阅 In Bus Element 和 Out Bus Element 模块参考页。
示例: 'ObjectParameters'
示例: 'Solver'
示例: 'SimulationCommand'
示例: 'Position'
示例: 'NameLocation'
数据类型: char
| string
输出参量
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'
。
版本历史记录
在 R2006a 之前推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)