get_param
获取参数名称和值
说明
示例
您可以使用具有以下输入参量的 get_param
函数来获取模块参数的值:
模块句柄或包括模块名称的完整模块路径,例如
'myModel/mySubsystem/myblock'
参数名称
有关模块句柄和路径的详细信息,请参阅Get Handles and Paths。
在此示例中,您将获得由名为 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 = 755.0043
要获取参数值,请使用句柄指定模块。不要手动输入句柄的值。舍入导致 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'
输入参数
对象或根的名称、路径或句柄,指定为字符向量、字符向量元胞数组、字符串数组、数值标量或 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
参数、属性或特性名称,指定为字符向量或字符串标量。有些名称区分大小写。
下表显示特例。
指定的参数 | 结果 |
---|---|
'ObjectParameters' | 结构体数组中作为单独字段的指定对象的参数名称。 |
'DialogParameters' | 结构体数组中作为单独字段的模块对话框参数名称。如果模块有封装,则函数返回封装参数。 |
有关参数、属性或特性的信息,请参阅对应参考页上的编程使用信息。例如:
模型 - 请参阅配置参数参考页。
模块 - 请参阅通用模块属性和模块参考页。
端口 - 请参阅信号属性工具参考页。
端口元素 - 请参阅 In Bus Element 和 Out Bus Element 模块参考页。
示例: 'ObjectParameters'
示例: 'Solver'
示例: 'SimulationCommand'
示例: 'Position'
示例: 'NameLocation'
数据类型: char
| string
输出参量
参数值,以参数类型确定的格式返回。如果您指定多个对象,则输出是元胞数组。
下表显示特例。
指定的参数 | 结果 |
---|---|
'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)