matlabで開いている図の数を知る方法はありますか?
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 に答える