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