Как мне получить ручки всех открытых фигур в MATLAB? - PullRequest
61 голосов
/ 27 декабря 2010

У меня есть девять открытых фигур в Matlab (сгенерированных другой функцией), и я хочу напечатать их все в файл. Кто-нибудь знает, как схватить за ручки все открытые фигуры в MATLAB?

Я знаю о gcf, но, похоже, он не делает то, что я хочу.

Ответы [ 4 ]

78 голосов
/ 27 декабря 2010

Есть несколько способов сделать это.Один из способов сделать это - получить все дочерние элементы корневого объекта (представленного в предыдущих версиях дескриптором 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
16 голосов
/ 27 декабря 2010

Лучшее, что можно сделать, - это НЕ искать ручки.Когда вы создаете каждую фигуру, захватите ее маркер.

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

Как сказал мне один из разработчиков:

Они называются дескрипторами, потому что вы должны держаться заих

11 голосов
/ 27 декабря 2010

Я думаю findall должно работать

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

6 голосов
/ 20 ноября 2013

У вас есть хорошие ответы для массы ручек.Но еще один совет для оригинального вопроса - распечатайте все рисунки в файл: вы можете использовать опцию publish, не имея дело с фигурками или ручками.

...