在 Matlab
,get_param
和set_param
命令需要 block 的确切目录。
gcb
命令可以为您提供当前选定 block 的路径。
确定相对于该 block 的 block 路径的最佳方法是什么?
例如,相对路径标识符有时使用句点。
要查找当前路径,请使用 './'
.
要查找父路径,请使用 '../'
.
要查找父级的父级,请使用 '../../'
.
这些不能与gcb
一起使用。然而。
MWE
在 Simulink
,如果我创建一个 block 并选择它,
然后输入Matlab
窗口:
get_param([gcb], 'ObjectParameters')
我获得了 block 参数列表,
其中任何一个都可以使用 set_param([gcb], <parameter>, <value>)
进行更改.
参数列表中包含 Parent
,它提供父路径。
是否有一个命令可以获取路径并删除直到下一个 '/'
?
(或更有用的是,充当反向命令 fullfile
?)
(有人提到了正则表达式,所以我正在研究它们。)
另外,(对我来说不太重要,但对后代来说),
有没有可以找到子路径的命令?
最佳答案
您可以使用get_param(<blockname>, 'Parent')
为当前 block 的父 block 。要获取父层和更高层的父层,您需要创建自己的函数,如下所示:
function blk = getParent(blk, n)
for k=1:n
blk = get_param(blk, 'Parent');
end
end
所以getParent(gcb, 1)
为您提供父项,getParent(gcb, 2)
给你 parent 的 parent 等等。
要查找 child ,您应该使用 find_system
与 SearchDepth
一起论证。
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
选项也是如此。
关于matlab - Simulink:获取层次结构中较高模块的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36626641/