123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- function [index parm zval] = cm_FASTER_1_channel_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
- %% mean correlation between channels
- tmp = cell2mat(data.trial);
- % correlation
- cor = corr(tmp');
- % set autocorrelation to NaN
- for j = 1:length(cor)
- cor(j,j) = NaN;
- end; clear j
- % z statistic
- parm.chan_cor = cm_inv_fisher_Z_20130605(nanmean(cm_fisher_Z_20130426(cor))');
- zval.chan_cor = zscore(parm.chan_cor);
- %% channel variance
- % z statistic
- parm.chan_var = var(tmp',1)';
- zval.chan_var = zscore(parm.chan_var);
- %% hurst exponent
- % calculate hurst exponent
- for t = 1:length(data.trial)
- display(['processing trial ' num2str(t)])
- for c = 1:length(data.label)
- hurst(c,t) = cm_heuristic_hurst_exponent_20140302(data.trial{t}(c,:));
- end; clear c
- end; clear t
- % z statistic of average hurst exponent
- parm.chan_hurst = mean(hurst,2);
- zval.chan_hurst = zscore(parm.chan_hurst);
- %% find outlier
- % temporary zscores
- tmpz = zval;
- % correlation outlier
- tmpz.chan_cor = cm_outlier2nan_20140311(tmpz.chan_cor,'<',criterion,recursive);
- % variance outlier
- tmpz.chan_var = cm_outlier2nan_20140311(tmpz.chan_var,'>',criterion,recursive);
- % hurst exponent outlier
- tmpz.chan_hurst = cm_outlier2nan_20140311(tmpz.chan_hurst,'>/<',criterion,recursive);
- %% mark outlier
- index = find( isnan(tmpz.chan_cor) | isnan(tmpz.chan_var) | isnan(tmpz.chan_hurst) );
|