GrandMean - Meg Wiki

You are not allowed to do login on this page. Login and try again.

Clear message
location: GrandMean

Averaging Fiff-files

Simple Matlab script for averaging of Fiff-files. It assumes that all data files have identical data parameters (e.g. after interpolation). You should also have applied identical filtering, baseline correction, referencing etc. where appropriate. This script will not care about bad channels - if a channel is bad in one file, it should be treated as bad in the grand-mean as well.


% Compute the grand-mean for a list of Fiff-files in cell array "files{}"
% The string "file_out" specifies the file name for output
% The first file of the list will be used as a template for Fiff-output
% This obviously assumes that all files have identical parameters (e.g. are
% interpolated to a standard sensor array)
% OH, March 2009


% output file name for grand-mean data
file_out = '/fullpath/GrandMean.fif';

% List of fiff-files to be averaged
fiff_files = {'/fullpath/file4subj1.fif', ...
              '/fullpath/file4subj2.fif', ...
              '/fullpath/file4subj3.fif'};

fid = fopen(file_out, 'a');
if fid==-1,
    fprintf(1, 'Cannot access output file %s\n', file_out);
    return;
end;
fclose(fid);

nr_files = length(fiff_files);

epoch_gm = [0];
for ff = 1:nr_files, % read all files and average all that might be relevant
    fprintf(1, '%s\n', fiff_files{ff});
    data = fiff_read_evoked(fiff_files{ff});
    if ff==1,
        data_templ = data;   % first data set will be used as template for output
    end;
    epoch_gm = epoch_gm + data.evoked.epochs;   % average MEG data epoch
end;
epoch_gm = epoch_gm/nr_files;

data_templ.evoked.epochs = epoch_gm; % insert averaged data into template structure

fiff_write_evoked(file_out, data_templ);  % Write average

% The end of this