Как мне получить ручки всех открытых фигур в MATLAB

55

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

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

Теги:
matlab-figure

4 ответа

73
Лучший ответ

Есть несколько способов сделать это. Один из способов сделать это - получить все дочерние объекты корневого объекта (представленный в предыдущих версиях дескриптором 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
  • 1
    +1 для findall , не знал этого.
  • 0
    Первый аргумент get() и findall() - это дескриптор. Что подразумевается под 0?
Показать ещё 1 комментарий
13

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

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

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

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

  • 6
    Это хороший момент, хотя это зависит от вашей ситуации и рабочего процесса. Если у вас есть большое количество команд для построения графиков, которые вызывают различные специализированные графики, и вы хотите что-то, что просто «работает с тем, что уже происходит», может быть полезно иметь возможность запрашивать дескрипторы.
  • 4
    Кроме того, есть несколько функций, которые будут anova1 много цифр для вас ( anova1 будет anova1 три), и они могут не возвращать вам эти маркеры.
9

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

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

3

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

  • 1
    +1. Учитывая, насколько мощна эта относительно неизвестная команда, я удивлен, что голосов больше нет.
  • 1
    Просто вошел в систему после нескольких месяцев отсутствия, просто чтобы подтвердить тот ответ, на который Google указал мне.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню