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

Simulink: Get Path of Blocks Higher on the Hierarchy

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

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

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

但是这些不能与 gcb 一起使用。

MWE

Simulink 中,如果我创建一个块并 select 它,
然后输入 Matlab window:

get_param([gcb], 'ObjectParameters')

我得到了一个块参数列表,
其中任何一个都可以使用 set_param([gcb], <parameter>, <value>).

进行更改

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

此外,(对我而言不太重要,但对后代而言),
有没有可以找到子路径的命令?

您可以对当前块的parent使用get_param(<blockname>, 'Parent')。要获得 parent 的 parent 层和更高层,您需要像这样创建自己的函数:

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

所以getParent(gcb, 1)给你parent,getParent(gcb, 2)给你parent的parent等等。

要找到 children,您应该使用 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

请注意,如果某些 children 是库链接,您还需要使用 FollowLinks 选项。