1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- function D = spm_eeg_avgtime(S)
- % Average a TF-dataset over time to get a spectrum dataset
- % FORMAT D = spm_eeg_avgtime(S)
- %
- % S - input struct
- % fields of S:
- % D - MEEG object or filename of M/EEG mat-file with epoched data
- % timewin - time window to average over {in PST ms} [default: [-Inf,Inf]]
- % prefix - prefix for the output file [default: 'S']
- %
- %
- % Output:
- % D - MEEG object
- %
- %__________________________________________________________________________
- % Copyright (C) 2012-2017 Wellcome Trust Centre for Neuroimaging
- % Vladimir Litvak
- % $Id: spm_eeg_avgtime.m 7132 2017-07-10 16:22:58Z guillaume $
- SVNrev = '$Rev: 7132 $';
- %-Startup
- %--------------------------------------------------------------------------
- spm('FnBanner', mfilename, SVNrev);
- spm('FigName','Average over time'); spm('Pointer','Watch');
- if ~isfield(S, 'prefix'), S.prefix = 'P'; end
- if ~isfield(S, 'timewin'), S.timewin = [-Inf Inf]; end
- D = spm_eeg_load(S.D);
- if ~strncmpi(D.transformtype,'TF',2)
- error('This function only works on TF datasets.');
- end
- timeind = D.indsample(1e-3*(min(S.timewin))):D.indsample(1e-3*(max(S.timewin)));
- if isempty(timeind) || any(isnan(timeind))
- error('Selected time window is invalid.');
- end
- %-Generate new MEEG object with new files
- %--------------------------------------------------------------------------
- Dnew = clone(D, [S.prefix fname(D)], [D.nchannels D.nfrequencies 1 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(:, :, timeind, i), 3), 3);
-
- if D.trialonset(i) ~= 0
- Dnew = trialonset(Dnew, i, D.trialonset(i)+ mean(D.time([timeind(1) timeind(end)])));
- end
-
- if any(Ibar == i), spm_progress_bar('Set', i); end
- end
- Dnew = timeonset(Dnew, mean(D.time([timeind(1) timeind(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 time: done'); spm('Pointer','Arrow');
|