6

matlabで開いている図の数を知る方法はありますか?

4

2 に答える 2

8

使用する:

numel(get(0,'Children'));

findobj関数を使用して、@triazotan が提案したものを使用することもできます。ただし、すべてのオブジェクトを通過する必要があるため、遅くなります。

編集: findobjが正確に どのように機能するかを確認することにしました。get(0,'Children')内のすべてのオブジェクトを調べるのは、はるかに複雑な方法です。これは、findobj
から呼び出されているファイルからの小さなダイジェストです: builtin( 'get', 0, 'ShowHiddenHandles ' )は、本質的に真ん中の get(0,'Children')です:

function h = findobjhelper( varargin )

%Copyright 2009-2010 The MathWorks, Inc.

allowHVHandles = true;

nin = nargin;
rootHandleVis = builtin( 'get', 0, 'ShowHiddenHandles' );

% See if 'flat' keyword is present 
hasflat = false;
if (nin > 1) 
    if strcmp( varargin{2}, 'flat' ) % Does the 'flat' keyword exist
        hasflat = true;
    end
end

if nin == 0
    if feature('HgUsingMatlabClasses')
        h = findobjinternal( 0, '-function', @findobjfilter );  
    else
        h = findobjinternal(0);
    end

したがって、findobjの使用は明らかに過剰です。

于 2012-01-09T14:49:59.323 に答える
3

直接的な方法はわかりませんが、試すことができます:

length(findobj('Type','figure'))

(つまり、 によって返される Figure ハンドルの数を数えますfindobj)

于 2012-01-09T14:40:55.900 に答える