2012-01-09 33 views

Trả lời

8

Sử dụng:

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

Bạn có thể cũng sử dụng những gì @triazotan đề xuất, sử dụng hàm findobj. Tuy nhiên nó sẽ chậm hơn, bởi vì bạn cần phải đi qua tất cả các đối tượng của bạn.

Edit: tôi đã quyết định để xem có bao findobj hoạt động chính xác. Đó là một cách phức tạp hơn nhiều vì đi qua tất cả các đối tượng trong get (0, 'trẻ em')
Đây là nhỏ tiêu hóa từ tập tin đang được gọi là từ findobj: Kiểm tra các dựng sẵn ('get', 0, 'ShowHiddenHandles') mà bản chất là một get (0, 'trẻ em') ở giữa:

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 

Vì vậy, sử dụng findobj rõ ràng là một quá mức cần thiết.

3

Tôi không biết bất kỳ cách trực tiếp, nhưng bạn có thể thử:

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

(tức là số đếm con số handle được trả về bởi findobj)

Các vấn đề liên quan