Main Content

replace_block

替换 Simulink 模型中的模块

说明

示例

replBlks = replace_block(sys,current,new) 将模型 sys 中的模块 current 替换为 new 类型的模块。

您可以使用 Simulink® 库中的模块或另一个模型中的模块作为替换模块。

replace_block 函数将提示您从与 current 参量匹配的模块列表中选择要替换的模块。

使用 replace_block 函数之前:

  • 加载模型 sys。有关如何加载模型的详细信息,请参阅 load_systemopen_system

  • 如果包含要用其替换当前模块的新模块的库未加载,请加载该库。例如,要用 Message Triggered Subsystem 模块替换当前模块,请通过在 MATLAB® 命令行窗口中输入以下命令来加载 Simulink 库:

    load_system('simulink.slx');

提示

在替换模块之前保存模型。

示例

replBlks = replace_block(sys,Name,Value,new) 替换与 Name,Value 对组参量指定的模块参数匹配的模块。也可以使用 find_system Name,Value 对组来限定如何搜索要替换的模块。

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量后,但参量对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

对于 replace_block 函数,您可以使用模块参数和值对组。有关所有模块参数的列表,请参阅通用模块属性模块特定的参数

要指定有关搜索要替换模块的其他信息,请在模块参数之前使用 find_system Name,Value 对组。例如,您可以使用 'CaseSensitive','off' 使模块搜索区分大小写,或者使用 'FollowLinks','on' 以跟踪链接进入库链接。有关 Name,Value 对组的列表,请参阅 find_system

示例

replBlks = replace_block(___,'noprompt') 将直接替换模块,而不提示您从对话框中选择模块。

示例

全部折叠

打开示例。然后,加载 vdp 模型。

load_system("vdp");

将 Gain 模块替换为 Integrator 模块。

出现一个对话框,提示您选择要替换的模块。

在此对话框中选择 vdp/Mu,然后点击确定

RepNames = replace_block("vdp","Gain","Integrator");

将 Scope 模块替换为 To Workspace 模块。

出现一个对话框,提示您选择要替换的模块。

在此对话框中选择 vdp/Scope,然后点击确定

RepNames = replace_block("vdp","Scope","simulink/Sinks/To Workspace");

要将模型中的模块替换为 Simulink Extras 库中的模块,请加载 Simulink Extras 库。

load_system("simulink_extras.slx");

用 Simulink Extras 库中的 Transfer Fcn (with initial states) 模块替换 Integrator 模块。

出现一个对话框,提示您选择要替换的模块。

在此对话框中选择 vdp/Muvdp/x1vdp/x2,然后点击确定

RepNames = replace_block("vdp", "Integrator", "simulink_extras/Additional Linear/Transfer Fcn (with initial states)");

替换 sldemo_clutch 模型的 Unlocked 子系统中的模块。替换 Gain 参数设置为 bv 的模块。

加载模型 sldemo_clutch

openExample('sldemo_clutch');

'Unlocked' 子系统中,将 Gain 值为 bv 的模块替换为 Integrator 模块。

replace_block('sldemo_clutch/Unlocked','Gain','bv','Integrator');

将出现一个对话框,提示您选择要替换的模块。

在此对话框中选择 sldemo_clutch/Unlocked/VehicleDamping,然后点击确定

打开示例。然后,加载 f14 系统。

load_system('f14')

将 Gain 模块替换为 Integrator 模块。该命令返回软件找到的 Gain 模块的模块路径,然后替换它们。

repl = replace_block('f14','Gain','Integrator','noprompt')
repl = 13x1 cell
    {'f14/Aircraft...'     }
    {'f14/Aircraft...'     }
    {'f14/Aircraft...'     }
    {'f14/Aircraft...'     }
    {'f14/Controller/Gain' }
    {'f14/Controller/Gain2'}
    {'f14/Controller/Gain3'}
    {'f14/Gain'            }
    {'f14/Gain1'           }
    {'f14/Gain2'           }
    {'f14/Gain5'           }
    {'f14/Nz pilot...'     }
    {'f14/Nz pilot...'     }

选择作为库链接的模块。跟踪库链接,并将库中的 Gain 模块替换为 Integrator 模块。

 replace_block(gcb, 'FollowLinks', 'on', 'BlockType', 'Gain', 'Integrator', 'noprompt')

输入参数

全部折叠

要替换其模块的模型的名称,指定为字符向量。如果指定模型,此命令将替换模型中所有匹配的模块。如果指定子系统,此命令将替换该子系统及其下面的子系统中的模块。

示例: 'vdp', 'sldemo_fuelsys/fuel_rate_control'

要替换的模块的类型,指定为 BlockTypeMaskType 值。要查看模块类型,请选择模块,然后在命令提示符下输入:

get_param(gcb,'BlockType')

对于封装模块,要查看封装类型,请选择模块并输入:

get_param(gcb,'MaskType')

用来替换当前模块的模块,指定为下列形式之一:

  • 替换模块的 BlockType 值。指定此值将使用库模块作为替换模块。

  • 替换模块的 MaskType 值。指定此值将使用库模块作为替换模块。

  • 替换模块的库路径,例如 'simulink/Sinks/To Workspace'。将光标悬停在库中的模块上可以看到库路径。

  • 来自另一个模型中的模块的路径名称,例如 'vdp/Mu'。使用此值可在您的模型中重用来自另一个模型的模块实例。

输出参量

全部折叠

current 参量返回的模块,以字符向量元胞数组形式返回。无论您是否完成替换,函数都会返回值。

版本历史记录

在 R2006a 之前推出