0001 function y=nt_phase_scramble(x,allsameflag)
0002
0003
0004
0005
0006
0007
0008
0009
0010 if nargin<1; error('!'); end
0011 if nargin<2||isempty(allsameflag); allsameflag=1; end
0012
0013
0014
0015
0016 [nsample,nchan,ntrial]=size(x);
0017 if rem(nsample,2)~=0
0018 x(nsample+1,:,:)=x(nsample,:,:);
0019 end
0020
0021 for iTrial=1:ntrial
0022 xx=x(:,:,iTrial);
0023 yy=fft(xx);
0024 if allsameflag
0025 phasor=exp(-2*pi*j*rand(size(x,1)/2-1,1));
0026 yy=yy.*repmat([1;phasor; 1; conj(flipud(phasor))],1,nchan);
0027 else
0028 phasor=exp(-2*pi*j*rand(size(x,1)/2-1,nchan));
0029 yy=yy.*[ones(1,nchan);phasor; ones(1,nchan); conj(flipud(phasor))];
0030 end
0031 yy=real(ifft(yy));
0032 y(:,:,iTrial)=yy;
0033 end
0034
0035 y=y(1:nsample,:,:);
0036