Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

find_mdlrefs

在模型层次结构中查找引用模型和 Model 模块

Variants 选项将被删除。请改用 MatchFilter。有关详细信息,请参阅 兼容性注意事项

说明

示例

[models,blocks] = find_mdlrefs(system) 查找模型层次结构中指定系统下的所有引用模型和 Model 模块。find_mdlrefs 函数临时加载模型。

示例

[models,blocks] = find_mdlrefs(system,Name,Value) 使用一个或多个名称-值对组提供其他搜索选项。例如,要保持模型处于已加载状态而不是临时加载,请将 KeepModelsLoaded 设置为 true

示例

全部折叠

查找指定的模型所引用的所有模型的引用模型和 Model 模块。

load_system('sldemo_mdlref_basic');
[myModels,myModelBlks] = find_mdlrefs('sldemo_mdlref_basic')
myModels = 2x1 cell
    {'sldemo_mdlref_counter'}
    {'sldemo_mdlref_basic'  }

myModelBlks = 3x1 cell
    {'sldemo_mdlref_basic/CounterA'}
    {'sldemo_mdlref_basic/CounterB'}
    {'sldemo_mdlref_basic/CounterC'}

默认情况下,find_mdlrefs 函数加载并关闭尚未加载的模型。要确定加载了哪些模型,请使用 find_system 函数。

find_mdlrefs('sldemo_mdlref_depgraph');
find_system('type','block_diagram')
ans =

  0x1 empty cell array

要查找并加载模型层次结构中的所有模型,请将 KeepModelsLoaded 设置为 true

find_mdlrefs('sldemo_mdlref_depgraph','KeepModelsLoaded',true);
find_system('type','block_diagram')
ans = 7x1 cell
    {'sldemo_mdlref_thermostat'  }
    {'sldemo_mdlref_heater'      }
    {'sldemo_mdlref_F2C'         }
    {'sldemo_mdlref_outdoor_temp'}
    {'sldemo_mdlref_house'       }
    {'sldemo_mdlref_heat2cost'   }
    {'sldemo_mdlref_depgraph'    }

顶层模型和所有引用模型保持加载状态。如果您打开 sldemo_mdlref_depgraph,您可以导航模型层次结构,而无需在打开引用模型时等待加载它们。

输入参数

全部折叠

系统名称、模块路径或句柄,指定为字符向量、字符串标量或数值标量。

系统必须为 SLX 文件、MDL 文件、Model 模块或 Subsystem 模块。

如果指定文件名,请不要包含文件扩展名。

数据类型: double | char | string

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须显示在引号内。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN

示例: refModels = find_mdlrefs(topmodel,'KeepModelsLoaded',true,'ReturnTopModelAsLastElement',false)

要搜索的级别,指定为由 'AllLevels' 和数值或逻辑值 1 (true) 或 0 (false) 组成的以逗号分隔的对组。

  • true - 搜索指定 system 的模型层次结构中的所有 Model 模块。

  • false - 仅搜索顶层系统。

数据类型: logical

保持模型处于已加载状态的选项,指定为以逗号分隔的对组,其中包含 'KeepModelsLoaded' 和数值或逻辑值 1 (true) 或 0 (false)。

默认情况下,该函数加载并关闭尚未加载的模型。要保持模型处于已加载状态,请将此参数设置为 true。如果您计划在找到模型后与模型进行交互,则保持模型处于已加载状态会很有用。

数据类型: logical

在搜索结果中包含受保护模型的选项,指定为以逗号分隔的对组,其中包含 'IncludeProtectedModels' 和数值或逻辑值 1 (true) 或 0 (false)。

此设置只影响返回的引用模型列表;它不影响返回的 Model 模块列表。

数据类型: logical

在搜索结果中包含变体模型的选项,指定为以逗号分隔的对组,其中包含 'Variants''ActivePlusCodeVariants''ActiveVariants''AllVariants'

  • 'ActivePlusCodeVariants' - 包括 Variant Subsystem 中所有在仿真中处于活动状态并且是所生成代码一部分的变体模型。

  • 'ActiveVariants' - 包括 Variant Subsystem 模块中的活动变体模型。

  • 'AllVariants' - 包括 Variant Subsystem 模块中的所有变体模型。

注意

此搜索约束仅适用于 Variant control mode 设置为 expressionlabelVariant Subsystem 模块。将 find_mdlrefs 函数与 MatchFilter 选项结合使用,可对所有类型的变体模块进行操作。

数据类型: char | string

搜索时匹配大小写的选项,对于区分大小写的搜索指定为 true,对于不区分大小写的搜索指定为 false

数据类型: logical

跟随库链接的搜索选项,指定为 truefalse。如果为 true,搜索将跟随链接进入库模块。

数据类型: logical

包含带注释的模块的搜索选项,指定为 truefalse

数据类型: logical

搜索封装模块的选项,指定为:

  • 'all' - 在所有封装模块中搜索。

  • 'none' - 防止在封装系统中搜索。

  • 'functional' - 包括没有对话框的封装子系统。

  • 'graphical' - 包括没有工作区或对话框的封装子系统。

数据类型: char | string

在搜索中匹配元素的函数句柄,如模块、系统、信号线、端口和注释。使用 MatchFilter 确定在搜索中应包括还是跳过元素。

命名函数必须在 MATLAB® 程序文件中定义。该函数将元素的句柄作为输入,并返回两个输出。

 function [match, prune] = func(element)
 
  • 输入 element 是要处理的模块的句柄。

  • 第一个输出 match 是逻辑值。如果为 false,搜索将跳过该元素。

  • 第二个输出 prune 是可选的逻辑值,仅在 element 是子系统时适用。默认值为 false。如果此值设置为 true,则搜索中将忽略整个子系统。

示例:使用 MatchFilter 查找模型中的所有模型模块,其中 InitFcn 是使用筛选器函数 initFcnMdlBlocks 定义的:

function match = initFcnMdlBlocks(handle)
  match = ~isempty(get_param(handle, 'InitFcn'));
end
addpath(fullfile(matlabroot,'examples','simulink_variants','main'));
model='slexVariantMdlRefCondProp';
load_system(model);
[models,blocks] = find_mdlrefs(model, 'MatchFilter', @initFcnMdlBlocks)

变体:Simulink 提供 Simulink.match.activeVariantsSimulink.match.codeCompileVariants 匹配筛选器函数,您可以使用这些函数来查找活动变体或代码编译变体模块。为此,请编译模型并应用适当的 MatchFilter 选项:

  • Simulink.match.activeVariants - 匹配在模型编译后在仿真中活动的模块

  • Simulink.match.codeCompileVariants - 匹配在模型编译后作为生成代码一部分的模块

    例如,使用 Simulink.match.activeVariants 选项查找模型中的活动变体:

    addpath(fullfile(matlabroot,'examples','simulink_variants','main'));
    model='slexVariantMdlRefCondProp';
    load_system(model);
    set_param(model, 'SimulationCommand', 'update');
    [models,blocks] = find_mdlrefs(model, 'MatchFilter', @Simulink.match.activeVariants);

    例如,使用 Simulink.match.codeCompileVariants 选项查找生成的 C 代码中的变体选择项:

    addpath(fullfile(matlabroot,'examples','simulink_variants','main'));
    load_system('slexVariantMdlRefCondProp');
    assignin('base','VSS_MODE',2);
    slexVariantMdlRefCondProp([], [], [], 'compileForRTW');
    [models,blocks]=find_mdlrefs('slexVariantMdlRefCondProp', 'MatchFilter', @Simulink.match.codeCompileVariants);
    slexVariantMdlRefCondProp([], [], [], 'term');

在搜索结果中包含带注释的模块的选项,指定为以逗号分隔的对组,其中包含 'IncludeCommented' 和数值或逻辑值 1 (true) 或 0 (false)。

数据类型: logical

在搜索结果中包含指定系统的选项,指定为以逗号分隔的对组,其中包含 'ReturnTopModelAsLastElement' 和数值或逻辑值 1 (true) 或 0 (false)。

默认情况下,返回的引用模型列表中的最后一个元素是您用 system 参数指定的模型、库或子系统文件的名称。如果指定模块,最后一个元素是包含该模块的文件的名称。

数据类型: logical

输出参数

全部折叠

模型的名称,以字符向量元胞数组形式返回。

默认情况下,最后一个元素是您用 system 参数指定的模型、库或子系统文件的名称。如果指定模块,最后一个元素是包含该模块的模型、库或子系统文件。

Model 模块的名称,以字符向量元胞数组形式返回。

兼容性注意事项

全部展开

从 R2020b 起不建议使用

从 R2021a 起会发出警告

R2021a 中的行为有变化

在 R2006a 之前推出