0001 function z=nt_multismooth(x,smooth,alignment)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 nt_greetings;
0017
0018 if nargin<3 || isempty(alignment); alignment=-1; end
0019 if nargin<2; error('!'); end
0020 if min(smooth)<1; error('smooth must be positive'); end
0021
0022 if iscell(x)
0023 for iCell=1:length(x);
0024 z{iCell}=nt_multismooth(x{iCell},smooth,alignment);
0025 end
0026 return
0027 end
0028
0029 if size(x,1)<max(smooth); error('smoothing kernel size should be no larger than nrows'); end
0030 if min(smooth)<0; error('smoothing kernel size should be nonnegative'); end
0031 smooth=smooth(:)';
0032 nsmooth=numel(smooth);
0033
0034
0035 [m,n,o]=size(x);
0036 z=zeros(m,n*nsmooth,o);
0037
0038 for iPage=1:o
0039 zz=zeros(m,n,nsmooth);
0040 for iSmooth=1:nsmooth
0041 if alignment==-1; nodelayflag=0; elseif alignment==0; nodelayflag=1; else; error('not implemented'); end
0042 zz(:,:,iSmooth)=nt_smooth(x(:,:,iPage),smooth(iSmooth),[],nodelayflag);
0043 end
0044 zz=permute(zz,[1,3,2]);
0045 zz=reshape(zz,m,n*nsmooth);
0046 z(:,:,iPage)=zz;
0047 end
0048
0049