如何获取MATLAB中所有开放数字的句柄

Liz*_*Liz 63 matlab figures matlab-figure

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

我知道,gcf但它似乎没有做我想要的.

gno*_*ice 81

有几种方法可以做到这一点.一种方法是获取根对象的所有子代(由句柄在先前版本中表示0):

figHandles = get(groot, 'Children');  % Since version R2014b
figHandles = get(0, 'Children');      % Earlier versions
Run Code Online (Sandbox Code Playgroud)

或者你可以使用这个功能findobj:

figHandles = findobj('Type', 'figure');
Run Code Online (Sandbox Code Playgroud)

如果任何一个数字都有隐藏的句柄,你可以改为使用这个函数findall:

figHandles = findall(groot, 'Type', 'figure');  % Since version R2014b
figHandles = findall(0, 'Type', 'figure');      % Earlier versions
Run Code Online (Sandbox Code Playgroud)

  • @MinhTran:当根对象由句柄"0"表示时,这是以前版本的延续.它仍适用于较新版本,但最好使用`groot`.我已相应更新了我的答案. (2认同)

Mat*_*oug 18

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

h(1) = figure;
h(2) = figure;
...
Run Code Online (Sandbox Code Playgroud)

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

它们被称为句柄,因为你应该坚持它们

  • 这是一个好点,但这取决于您的情况和工作流程.如果你有各种各样的绘图命令可以显示不同的专用图,并且你想要的东西只是"处理已经发生的事情",那么能够查询句柄会很有用. (6认同)
  • 此外,还有一些函数可以为你绘制许多数字(`anova1`将绘制三个)并且它们可能不会返回那些句柄 (4认同)

Chr*_*ris 11

我认为findall应该有效

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


Adi*_*iel 6

你得到了手柄质量的精美答案.但原始问题的另一个提示 - 打印所有要提交的数字:您可以使用publish选项,而无需处理figrues或句柄.