123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- function D = spm_eeg_avgfreq(S)
- % Average a TF-dataset over frequency to get a time-domain dataset
- % FORMAT D = spm_eeg_avgfreq(S)
- %
- % S - input struct
- % fields of S:
- % D - MEEG object or filename of M/EEG mat-file with epoched data
- % freqwin - frequency window to average over [default: [-Inf, Inf]]
- % prefix - prefix for the output file [default: 'P']
- %
- % Output:
- % D - MEEG object
- %__________________________________________________________________________
- % Copyright (C) 2012-2017 Wellcome Trust Centre for Neuroimaging
- % Vladimir Litvak
- % $Id: spm_eeg_avgfreq.m 7132 2017-07-10 16:22:58Z guillaume $
- SVNrev = '$Rev: 7132 $';
- %-Startup
- %--------------------------------------------------------------------------
- spm('FnBanner', mfilename, SVNrev);
- spm('FigName','Average over frequency'); spm('Pointer','Watch');
- if ~isfield(S, 'prefix'), S.prefix = 'P'; end
- if ~isfield(S, 'freqwin'), S.freqwin = [-Inf Inf]; end
- D = spm_eeg_load(S.D);
- if ~strncmpi(D.transformtype,'TF',2)
- error('This function only works on TF datasets.');
- end
- freqind = D.indfrequency(min(S.freqwin)):D.indfrequency(max(S.freqwin));
- if isempty(freqind) || any(isnan(freqind))
- error('Selected frequency window is invalid.');
- end
- %-Generate new MEEG object with new files
- %--------------------------------------------------------------------------
- Dnew = clone(D, [S.prefix fname(D)], [D.nchannels D.nsamples D.ntrials]);
- %-Averaged data
- %--------------------------------------------------------------------------
- spm_progress_bar('Init', D.ntrials, 'Trials processed');
- if D.ntrials > 100, Ibar = floor(linspace(1, D.ntrials, 100));
- else Ibar = 1:D.ntrials; end
- for i = 1:D.ntrials
-
- Dnew(:, :, i) = spm_squeeze(mean(D(:, freqind, :, i), 2), 2);
-
- if any(Ibar == i), spm_progress_bar('Set', i); end
- end
- spm_progress_bar('Clear');
- %-Save the new M/EEG dataset
- %--------------------------------------------------------------------------
- Dnew = Dnew.history(mfilename, S);
- save(Dnew);
- D = Dnew;
- %-Cleanup
- %--------------------------------------------------------------------------
- fprintf('%-40s: %30s\n','Completed',spm('time')); %-#
- spm('FigName','Average over frequency: done'); spm('Pointer','Arrow');
|