123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- function [index parm zval] = THG_FASTER_4_channel_x_epoch_artifacts_20140302(cfg,data)
- %% defaults
- if ~isfield(cfg,'criterion'); criterion = 3; else criterion = cfg.criterion; end
- if ~isfield(cfg,'recursive'); recursive = 1; else recursive = strcmp(cfg.recursive,'yes'); end
- %% generate data structure
- sz = size(data.trial{1});
- nt = length(data.trial);
- tmp = zeros([sz(1)*nt sz(2)]);
- for t = 1:nt
- tmp((t-1)*sz(1)+1:t*sz(1),:) = data.trial{t};
- end; clear t
- % overall mean (calculation adopted from FASTER)
- alltmp = zeros([size(data.trial{1}) length(data.trial)]);
- for t = 1:length(data.trial)
- alltmp(:,:,t) = data.trial{t};
- end; clear t
- means = mean(mean(alltmp,2),3);
- means = repmat(means,nt,1);
- %% parameter
- % variance
- parm.c_x_e_var = var(tmp',1)';
- % median gradient
- parm.c_x_e_med = median(diff(tmp'))';
- % amplitude range
- parm.c_x_e_amp = (max(tmp') - min(tmp'))';
- % deviation of the mean amplitude
- parm.c_x_e_dev = mean(tmp')' - means;
- %% zscores
- zval.c_x_e_var = zscore(parm.c_x_e_var);
- zval.c_x_e_med = zscore(parm.c_x_e_med);
- zval.c_x_e_amp = zscore(parm.c_x_e_amp);
- zval.c_x_e_dev = zscore(parm.c_x_e_dev);
- %% find outlier
- % temporary zscores
- tmpz = zval;
- % variance outlier
- tmpz.c_x_e_var = cm_outlier2nan_20140311(tmpz.c_x_e_var,'>',criterion,recursive);
- % median gradient outlier
- tmpz.c_x_e_med = cm_outlier2nan_20140311(tmpz.c_x_e_med,'>',criterion,recursive);
- % amplitude range outlier
- tmpz.c_x_e_amp = cm_outlier2nan_20140311(tmpz.c_x_e_amp,'>',criterion,recursive);
- % deviation outlier
- tmpz.c_x_e_dev = cm_outlier2nan_20140311(tmpz.c_x_e_dev,'>',criterion,recursive);
- %% mark outlier
- ind_ = find( isnan(tmpz.c_x_e_var) | isnan(tmpz.c_x_e_med) | ...
- isnan(tmpz.c_x_e_amp) | isnan(tmpz.c_x_e_dev) );
- index = zeros(sz(1),nt);
- index(ind_) = 1;
- %% restructure data
- % parameter
- parm.c_x_e_var = reshape(parm.c_x_e_var,sz(1),nt);
- parm.c_x_e_med = reshape(parm.c_x_e_med,sz(1),nt);
- parm.c_x_e_amp = reshape(parm.c_x_e_amp,sz(1),nt);
- parm.c_x_e_dev = reshape(parm.c_x_e_dev,sz(1),nt);
- % zscores
- zval.c_x_e_var = reshape(zval.c_x_e_var,sz(1),nt);
- zval.c_x_e_med = reshape(zval.c_x_e_med,sz(1),nt);
- zval.c_x_e_amp = reshape(zval.c_x_e_amp,sz(1),nt);
- zval.c_x_e_dev = reshape(zval.c_x_e_dev,sz(1),nt);
|