如何在MATLAB中获取所有打开的图形的句柄

本文最后更新于 2023年9月25日。

figHandles = get(0, 'Children')
figHandles = findobj('Type', 'figure')

How do I get the handles of all open figures in MATLAB

我在matlab中有9个打开的图形(由另一个函数生成),我想将它们全部打印到文件中。 有谁知道如何抓住MATLAB中所有打开的图形的句柄?

我知道gcf,但是它似乎并没有满足我的要求。


有几种方法可以做到这一点。 一种方法是获取根对象的所有子对象(在以前的版本中由句柄0表示):
figHandles = get(groot, ‘Children’);  % Since version R2014b
figHandles = get(0, ‘Children’);      % Earlier versions

或者您可以使用功能findobj:

figHandles = findobj(‘Type’, ‘figure’);

如果任何图都有隐藏的句柄,则可以改用功能findall:
figHandles = findall(groot, ‘Type’, ‘figure’);  % Since version R2014b
figHandles = findall(0, ‘Type’, ‘figure’);      % Earlier versions

 相关讨论


最好的事情之一就是不需要寻找手柄。 创建每个图形时,请捕获其手柄。

h(1) = figure;
h(2) = figure;

正如一位开发人员告诉我的那样:

They are called handles, because you are supposed to hold on to them

 相关讨论


我认为findall应该工作

handles=findall(0,’type’,’figure’)


您将获得很好的手柄质量答案。 但是,原始问题的另一个技巧是将所有图形打印到文件中:您可以使用publish选项,而无需处理图形或手柄。