如何在 MATLAB 中获取所有打开图形的句柄
Posted
技术标签:
【中文标题】如何在 MATLAB 中获取所有打开图形的句柄【英文标题】:How do I get the handles of all open figures in MATLAB 【发布时间】:2011-05-31 05:58:08 【问题描述】:我在 matlab 中有九个打开的图形(由另一个函数生成),我想将它们全部打印到文件中。有谁知道?
我知道gcf
,但它似乎并没有达到我想要的效果。
【问题讨论】:
【参考方案1】:有几种方法可以做到这一点。一种方法是获取root object 的所有子代(在以前的版本中由句柄0
表示):
figHandles = get(groot, 'Children'); % Since version R2014b
figHandles = get(0, 'Children'); % Earlier versions
或者你可以使用函数findobj
:
figHandles = findobj('Type', 'figure');
如果任何数字有hidden handles,您可以使用函数findall
:
figHandles = findall(groot, 'Type', 'figure'); % Since version R2014b
figHandles = findall(0, 'Type', 'figure'); % Earlier versions
【讨论】:
get()
和findall()
的第一个参数是句柄。提供 0 是什么意思?
@MinhTran:这是对先前版本的保留,当时根对象由句柄 0
表示。它仍然适用于较新的版本,但最好使用groot
。我已经相应地更新了我的答案。【参考方案2】:
我认为findall 应该可以工作
handles=findall(0,'type','figure')
【讨论】:
【参考方案3】:最好的办法之一是不需要寻找把手。创建每个图形时,请捕获其句柄。
h(1) = figure;
h(2) = figure;
...
正如这里的一位开发人员告诉我的那样:
它们被称为句柄,因为你应该抓住它们
【讨论】:
这是一个很好的观点,尽管这取决于您的情况和工作流程。如果您有各种各样的绘图命令来显示不同的专业绘图,并且您想要一些“处理已经发生的事情”的东西,那么能够查询句柄会很有用。 此外,还有一些函数可以为您绘制许多数字(anova1
将绘制三个)并且它们可能不会返回这些句柄【参考方案4】:
对于手柄质量,您已经得到了很好的答案。但原始问题的另一个提示 - 打印所有要归档的数字:您可以使用 publish
选项,而无需处理数字或句柄。
【讨论】:
+1。考虑到这个相对未知的命令有多么强大,我很惊讶没有更多的支持。 在缺席数月后才登录,只是为了支持 Google 刚刚指出我的答案。以上是关于如何在 MATLAB 中获取所有打开图形的句柄的主要内容,如果未能解决你的问题,请参考以下文章