主要内容

set_param

R2026b

设置 Simulink 参数值

描述

set_param(object,parameter1=value1,...,parameterN=valueN) 为目标对象设置指定的参数值。例如,您可以使用此语法来更改 Sine Wave 模块的振幅值。目标对象可以是模型、子系统、库、模块、信号线、端口,或指定为句柄或路径的总线元素端口元素。有关如何获取句柄和路径的信息,请参阅Get Handles and Paths。

要为目标对象设置多个参数值,请使用多个名称-值参量调用 set_param 函数一次,而不是为每个参数单独调用该函数。用一次函数调用设置多个参数的方法更快,因为一次调用只计算一次参数。如果任何参数名称或值无效,则函数不会设置任何参数。

要以编程方式与仿真交互,请将 set_param 函数与 SimulationCommand 名称-值参量结合使用。有关详细信息,请参阅页以编程方式运行仿真中的通过发出仿真命令与仿真进行交互部分。

对于大多数参数,无论指定值与当前值是否不同,运行 set_param 的速度都快于比较值并且仅当值不同时才运行函数。

使用 set_param 函数更改参数值会弄脏模型,即使参数仅更改模式也是如此。例如,通过设置 LabelModeActiveChoice 参数的值来更改变体控制项模式会弄脏模型。

示例

示例

全部折叠

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

要设置该值,您需要三个输入:

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

blockPath = "myModel/mySubsystem/myBlock";

获取要设置其值的参数的编程名称。一种方法是查看模块的文档。在模块的文档页上,在参数部分中找到该参数。然后,查看编程用法部分以获取编程名称。

对于此示例,请查看此页以获取参数名称:Gain。存储增益值的参数的编程名称是 Gain。

查看参数文档的编程用法部分以获取允许的值类型。在这种情况下,新值必须表示为字符串或字符向量。

设置参数值。

gainValue = get_param(blockPath,Gain="5");

如果您要对模块运行更多运算,请考虑使用其句柄而不是模块路径。要从模块路径获取句柄,请使用以下命令。

h = getSimulinkBlockHandle(blockPath);

使用句柄设置参数值。

gainValue = set_param(h,Gain="5");

假设您有一个已加载的模型,它具有包含数百个模块的复杂层次结构。模型的句柄存储在变量 h 中。将名称包含关键短语 Low-Pass Filter 的所有 Transfer Fcn 模块的传递函数分子设置为 1。

要设置该值,您需要三个输入:

获取名称包含关键短语 Low-Pass Filter 的 Transfer Fcn 模块的路径。使用函数 find_system。

blockPaths = find_system(h,Regexp="on",CaseSensitive="on",Type="Block",BlockType="TransferFcn",Name=".*Low-Pass Filter.*")

获取要设置其值的参数的编程名称。一种方法是查看模块的文档。在模块的文档页上,在参数部分中找到该参数。然后,查看编程用法部分以获取编程名称。

对于此示例,请查看此页以获取参数名称:Transfer Fcn。存储传递函数分子系数的参数的编程名称是 Numerator。

查看参数文档的编程用法部分以获取允许的值类型。在这种情况下,新值必须表示为字符串或字符向量。

设置传递函数分子。

set_param(blockPaths,Numerator="1");

假设您有已加载的名为 myModel 的模型。将模型的求解器设置为 ode15s,并将停止时间设置为 3000 秒。

要设置这些值,您需要三个输入:

在此示例中,您已有模型名称和新值。

获取要设置的参数的编程名称。一种方法是查看文档。打开此页:为模型设置模型配置参数。导航到配置窗格部分。在配置窗格部分中,点击指向“配置参数”对话框中允许您设置感兴趣参数的窗格的文档页的链接。在打开的页上,点击指向感兴趣参数的文档页的链接。然后,查看编程用法部分以获取编程名称。

对于此示例,您要查找求解器和停止时间参数。您可以在“配置参数”对话框的求解器窗格上设置模型的求解器和停止时间。在文档的配置窗格部分中,点击求解器窗格链接。在打开的页上,点击求解器和停止时间链接,并查看每个链接的编程用法部分。参数的编程名称是 Solver 和 StopTime

查看参数文档的编程用法部分以获取允许的值类型。在这种情况下,两个新值都必须表示为字符串或字符向量。

设置求解器和停止时间。

set_param("myModel",Solver="ode15s",StopTime="3000")

输入参数

全部折叠

要查询的目标对象(或根)的句柄、名称或路径。您指定目标对象的方式取决于目标对象的类型。

  • 模型 - 模型名称或句柄。

  • 子系统 - 系统名称或句柄。

  • 库 - 库名称或句柄。

  • 模块 - 模块路径或句柄。

  • 信号线 - 信号线句柄。

  • 端口 - 端口句柄。

  • 端口元素 - 由模型名称或子系统模块路径、正斜杠以及端口名称或总线元素路径组成的路径。对于总线元素端口,总线元素路径提供从顶层总线到目标元素的层次结构,用点分隔层次结构中的每个名称。

有关如何获取句柄和路径的信息,请参阅Get Handles and Paths。将句柄格式化为数值标量或数值向量。将名称和路径格式化为字符串、字符串数组、字符向量或字符向量元胞数组。要用一个公共参数指定多个对象,请使用字符向量元胞数组、字符串数组或句柄数组。所有指定的对象都必须具有指定的参数。

示例: "myModel/mySubsystem/myBlock"

提示

  • 如果对同一模块多次调用 get_param,请用数值句柄指定该模块。这种方法比对 get_param 使用完整模块路径更高效。

  • 当您输出句柄的值时,MATLAB® 命令行窗口会显示数字。不要尝试使用显示的数字,因为命令行窗口不显示所有数字,并且句柄在 Simulink® 会话之间不会持久存在。相反,应将句柄值存储在变量中,然后使用该变量来指定目标对象。

数据类型: double | string | character vector

参数、属性或特性名称,指定为字符串或字符向量。有些名称区分大小写。

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

要获取目标对象的所有参数,请使用带 'ObjectParameters' 选项的 get_param 函数。

示例: "SolverName"

示例: "SimulationCommand"

示例: "Position"

示例: "NameLocation"

数据类型: string | character vector

参数值,指定为参数类型决定的格式。一些参数值区分大小写。值通常是字符串或字符向量,但也可以是数值标量、数组和其他类型。

许多模块参数值指定为字符串或字符向量。但 Position(它指定为向量)和 UserData(它可以是任何数据类型)是两个例外。

限制

  • 如果您使用 matlab -nodisplay 启动会话,则不能使用 set_param 运行仿真。-nodisplay 模式不支持使用 set_param 进行仿真。改用 sim 函数。

  • 当使用 set_param 函数重命名模块或信号时,以下名称无效:空名称、仅包含换行符的名称以及以 / 开头或结尾的名称。

版本历史记录

在 R2006a 之前推出