0001 function iBadChans=nt_badChannels(x,threshRel,threshAbs,prop)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 nt_greetings;
0013
0014 if nargin<1; error('!'); end
0015 if nargin<2||isempty(threshRel); threshRel=3; end
0016 if nargin<3; threshAbs=[]; end
0017 if nargin<4; prop=0.7; end
0018
0019 x=nt_unfold(x);
0020
0021
0022 w=ones(size(x));
0023 for iIter=1:4
0024 xx=nt_demean(x,w);
0025 STD=sqrt(nt_wmean(xx(:).^2,w(:)));
0026 w(find(abs(xx)/STD>3))=0;
0027 end
0028
0029 x=nt_demean(x,w);
0030
0031 iBadChans=[];
0032 for iChan=1:size(x,2)
0033 if numel(find(abs(x(:,iChan))/STD>threshRel)) / size(x,1) > prop
0034 iBadChans=[iBadChans,iChan];
0035 end
0036 end
0037
0038 if ~isempty(threshAbs)
0039 for iChan=1:size(x,2)
0040 if numel(find(abs(x(:,iChan))>threshAbs)) / size(x,1) > prop
0041 iBadChans=[iBadChans,iChan];
0042 end
0043 end
0044 end
0045
0046