Simulink:在层次结构中获取更高的块路径

时间:2016-04-14 14:47:21

标签: matlab path simulink

Matlab中,get_paramset_param命令需要块的确切目录。
gcb命令可以为您提供当前所选块的路径 确定相对于该块的块路径的最佳方法是什么?

例如,相对路径标识符有时会使用句点。

要查找当前路径,请使用'./' 要查找父路径,请使用'../' 要查找父级的父级,请使用'../../'

然而,这些不与gcb一起使用。

MWE

Simulink中,如果我创建一个块并选择它,则 然后输入Matlab窗口:

get_param([gcb], 'ObjectParameters')

我提供了一个块参数列表,
其中任何一个都可以使用set_param([gcb], <parameter>, <value>)进行更改。

参数列表中包含Parent,它提供父路径 是否有一个命令可以采取路径并删除到下一个'/'
(或者更有用的是,一个充当反向fullfile的命令?)
(有人提到正则表达式,所以我正在研究那些。)

另外,(对我来说不那么重要,但对后人来说),
有没有可以找到儿童路径的命令?

1 个答案:

答案 0 :(得分:4)

您可以将get_param(<blockname>, 'Parent')用于当前块的父级。要获得父级和更高级别的父级,您需要创建自己的函数,如下所示:

function blk = getParent(blk, n)
for k=1:n
    blk = get_param(blk, 'Parent');
end
end

因此getParent(gcb, 1)为您提供父级,getParent(gcb, 2)为您提供父级的父级,依此类推。

要查找孩子,您应该使用find_systemSearchDepth参数。

find_system(gcb) % All children regardless of depth

find_system(gcb, 'SearchDepth', 1) % Immediate children

find_system(gcb, 'SearchDepth', 2) % Immediate children and their children

请注意,如果某些孩子是图书馆链接,您还需要使用FollowLinks选项。