web-dev-qa-db-ja.com

MATLABで開いているすべての図のハンドルを取得する方法

Matlabに9つの開いた図(別の関数によって生成された)があり、それらをすべてファイルに印刷したい。 MATLABで開いているすべての図のハンドルを取得する方法を知っている人はいますか?

私はgcfについて知っていますが、それは私が望むことをしないようです。

61
Liz

これを行うにはいくつかの方法があります。これを行う1つの方法は、 ルートオブジェクト (以前のバージョンではハンドル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
78
gnovice

最善の方法の1つは、ハンドルを探す必要がないことです。各Figureを作成するときに、そのハンドルをキャプチャします。

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

ここで開発者の一人が私に言ったように:

あなたはそれらをつかむことになっているので、それらはハンドルと呼ばれます

16
MatlabDoug

findall は動作するはずです

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

11
Chris

ハンドルの質量については、良い答えが得られました。しかし、元の質問の別のヒント-すべての図をファイルに出力します。 publish オプションを使用できます。

6
Adiel