У меня есть девять открытых фигур в matlab (сгенерировано другой функцией), и я хочу напечатать их все в файл. Кто-нибудь знает, как захватить ручки всех открытых фигур в 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;
...
Как сказал один из разработчиков:
Они называются дескрипторами, потому что вы должны удерживать их
anova1
много цифр для вас ( anova1
будет anova1
три), и они могут не возвращать вам эти маркеры.
Я думаю, findall должен работать
handles=findall(0,'type','figure')
У вас есть прекрасные ответы на массу дескрипторов. Но еще один совет для исходного вопроса: распечатайте все цифры в файле: вы можете использовать publish
, не имея дело с фигурами или ручками.
findall
, не знал этого.get()
иfindall()
- это дескриптор. Что подразумевается под 0?