0001 function d = size(a,varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010 sa = struct(a);
0011 dim = ones(length(sa),32);
0012 pos = ones(length(sa),32);
0013
0014 for i=1:length(sa)
0015 sz = sa(i).dim;
0016 dim(i,1:length(sz)) = sz;
0017 ps = sa(i).pos;
0018 pos(i,1:length(ps)) = ps;
0019 end
0020
0021 tmp = pos==1;
0022 for i=1:32
0023 ind = find(all(tmp(:,[1:(i-1) (i+1):32]),2));
0024 d(i) = sum(dim(ind,i));
0025 end;
0026 lim = max(max(find(d~=1)),2);
0027 d = d(1:lim);
0028
0029 if nargin>1,
0030 if varargin{1}<=length(d),
0031 d = d(varargin{1});
0032 else
0033 d = 1;
0034 end;
0035 end;