【问题标题】:How to find all MATLAB function blocks in a Simulink model如何在 Simulink 模型中查找所有 MATLAB 功能块
【发布时间】:2017-02-02 06:24:47
【问题描述】:

我想知道如何在 Simulink 模型中找到所有 MATLAB function 块。 在我知道有很多 MATLAB function 块的模型中,我尝试了以下命令:

find_system(myModel,'LookUnderMasks','on','FollowLinks','on','BlockType','MATLAB Function')

但是,此命令返回一个空元胞数组。如果我尝试这样的事情:

find_system(myModel,'LookUnderMasks','on','FollowLinks','on','BlockType','Gain')

,我得到了很多结果。 “MATLAB 函数”是实际的 BlockType 还是有其他术语可以使用?

【问题讨论】:

    标签: matlab simulink


    【解决方案1】:

    您可以使用以下代码查找所有 MATLAB 功能块。

    S = sfroot();
    
    % Get block handles
    B = find(sfroot, '-isa','Stateflow.EMChart');
    

    这将搜索所有打开的模型并返回 Stateflow.EMChart 类型的对象列表。您可以查看这些对象的 Path 属性,以将列表缩减为您想要的模型。

    【讨论】:

    • 我试过你的代码,我得到了一个 Stateflow.EMChart 对象,它是 80x1。我没有 Stateflow,也不确定如何访问或查看这 80 个元素。另外,为什么要使用 Stateflow 来搜索 MATLAB Function 模块类型?
    • MATLAB 功能块是一个特殊的块,它建立在其他技术之上,这就是您看到这一点的原因。您可以像任何 MATLAB 数组一样对 80x1 数组进行索引。尝试显示 B(1),您将能够看到它的属性。
    【解决方案2】:

    您需要使用以下方法定义搜索深度:

    h=find_system(myModel,'SearchDepth',N, 'regexp', 'on', 'FollowLinks','on','Findall','on','LookUnderMasks','all',  'BlockType','Gain');
    

    指定 N,N 越高,搜索越深入块。

    如果这不起作用,请告诉我。

    【讨论】:

    • MATLAB 函数不是有效参数。
    • 那么 MATLAB Function 模块的参数应该是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    相关资源
    最近更新 更多