主要内容

get_param

R2026b

获取参数名称和值

描述

value = get_param(Object,Parameter) 为目标对象返回指定参数的值。例如,您可以使用此语法来获取 Sine Wave 模块的振幅值。目标对象可以是模型、子系统、库、模块、信号线、端口,或指定为句柄或路径的总线元素端口元素。有关如何获取句柄和路径的信息,请参阅Get Handles and Paths。

要查询 Simulink® 模型、子系统或库或其内容,必须加载或打开该模型、子系统或库。

示例

示例

全部折叠

假设您有一个名为 myModel 的已加载模型,它包含一个名为 mySubsystem 的 Subsystem 模块。该子系统包含名为 myBlock 的 Gain 模块。获取增益值。

要获取该值,您需要两个输入:

在此示例中,您有足够的信息来获取模块路径。模块路径是从模型的根到该模块的模型层次结构路径,层次结构中的每步都用正斜杠分隔。将模块路径存储在变量中。

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 模块的传递函数系数。

要获取系数的值,您需要两个输入:

获取名称包含关键短语 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

包含任何封装模块的参数名称及其当前值的结构体。

有关参数、属性或特性的信息,请参阅对应文档页上的编程用法信息。例如:

示例: "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 之前推出