67

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

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

4

4 に答える 4

82

これを行うにはいくつかの方法があります。これを行う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
于 2010-12-27T17:51:57.270 に答える
18

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

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

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

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

于 2010-12-27T18:00:00.513 に答える
12

findallは機能するはずだと思います

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

于 2010-12-27T17:54:09.850 に答える
7

ハンドルの質量については、すばらしい答えが得られます。しかし、元の質問のもう1つのヒントは、すべての図をファイルに印刷することですpublish。図やハンドルを扱わなくても、オプションを使用できます。

于 2013-11-19T23:31:58.437 に答える