0001 function i=nt_idx(x,scale,i)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 if nargin<2; n=100; end
0016 if nargin<3;
0017
0018 i.min=[];
0019 i.max=[];
0020 i.mean=[];
0021 i.ssq=[];
0022 i.card=[];
0023 end
0024
0025 if ndims(x)>2; error('x should be 2D'); end
0026 [m,n]=size(x);
0027 if m<scale; warning('nrows < scale'); end
0028
0029 nchunks=floor(m/scale);
0030 nextra=m-scale*nchunks;
0031
0032
0033 extra=x(scale*nchunks+1:end,:);
0034 x=x(1:scale*nchunks,:);
0035 x=reshape(x,[scale,nchunks,n]);
0036
0037
0038 if isfield(i,'card')
0039 a=ones(nchunks,1)*scale;
0040 if nextra>0; a=[a;nextra]; end
0041 i.card=[i.card;a];
0042 end
0043
0044
0045 if isfield(i,'min');
0046 a=reshape(min(x,[],1),[nchunks,n]);
0047 if nextra>0; a=[a;min(extra,[],1)]; end
0048 i.min=[i.min;a];
0049 end
0050
0051
0052 if isfield(i,'max');
0053 a=reshape(max(x,[],1), [nchunks,n]);
0054 if nextra>0; a=[a;max(extra,[],1)]; end
0055 i.max=[i.max;a];
0056 end
0057
0058
0059 if isfield(i,'mean');
0060 a=reshape(mean(x,1),[nchunks,n]);
0061 if nextra>0; a=[a;mean(extra,1)]; end
0062 i.mean=[i.mean;a];
0063 end
0064
0065
0066 if isfield(i,'ssq');
0067 a=reshape(sum(x.^2,1),[nchunks,n]);
0068 if nextra>0; a=[a;sum(extra.^2,1)]; end
0069 i.ssq=[i.ssq;a];
0070 end