# [Eeglablist] averaging time-frequency maps in eeglab

Arnaud Delorme arno at salk.edu
Thu Mar 18 12:44:08 PST 2004

```Dear Scott and Wang,

for averaging time-frequency analysis accross subjects, use the function
tftopo.m. I attached a script for computing time-frequency decomposition
for all electrodes of a dataset, then call tftopo to plot the topography
of the ERSP at specific time-frequency points (there is no menu
equivalent for tftopo in eeglab yet).
You may modify the script to scan several subjects.
Using tftopo() you may set a threshold in terms of the number of subject
showing a significant effect (this binomial approach is usefull to
correct for multiple comparisons since, by chance, there is a very low
probability that a large number of subjects will show a significant
effect at the same time-frequency point).
About plotting: the function timef() actually allow to specify no
graphical output (" 'plotersp','off', 'plotitc','off' " as in the
exemple below).
Hope this help.

Best

Arno

% compute tftopo for all channels in one EEGLAB dataset
% Arnaud Delorme, Nov 19, 2003
% ----------------------------
rmbaseline = 0;

% computing time-frequency decomposition for all electrodes
% ---------------------------------------------------------
for elec = 1:EEG.nbchan
[ersp,itc,powbase,times,freqs,erspboot,itcboot] = pop_timef(EEG, ...
1, elec, [EEG.xmin EEG.xmax]*1000, [3 0.5], 'maxfreq', 50, 'padratio', 4, ...
'plotphase', 'off', 'timesout', 60, ...
'alpha', .05, 'plotersp','off', 'plotitc','off');
if elec == 1
allersp     = zeros([ size(ersp)     EEG.nbchan]);
allitc      = zeros([ size(itc)      EEG.nbchan]);
allpowbase  = zeros([ size(powbase)  EEG.nbchan]);
alltimes    = zeros([ size(times)    EEG.nbchan]);
allfreqs    = zeros([ size(freqs)    EEG.nbchan]);
allerspboot = zeros([ size(erspboot) EEG.nbchan]);
allitcboot  = zeros([ size(itcboot)  EEG.nbchan]);
end;
allersp     (:,:,elec) = ersp;
allitc      (:,:,elec) = itc;
allpowbase  (:,:,elec) = powbase;
alltimes    (:,:,elec) = times;
allfreqs    (:,:,elec) = freqs;
allerspboot (:,:,elec) = erspboot;
allitcboot  (:,:,elec) = itcboot;
end;

% removing the common power baseline
% ----------------------------------
if rmbaseline == 1
meanpowbase = mean(allpowbase,3);
for elec = 1:EEG.nbchan
% ------------------------
allersp    (:,:,elec) = allersp    (:,:,elec) + repmat( 10*log10(allpowbase(:,:,elec))', [1 size(allersp,2)]);
allerspboot(:,:,elec) = allerspboot(:,:,elec) + repmat( 10*log10(allpowbase(:,:,elec)) , [size(allerspboot,1) 1]);

% subtracting new baseline
% ------------------------
allersp    (:,:,elec) = allersp    (:,:,elec) - repmat( 10*log10(meanpowbase)', [1 size(allersp,2)]);
allerspboot(:,:,elec) = allerspboot(:,:,elec) - repmat( 10*log10(meanpowbase) , [size(allerspboot,1) 1]);
end;
end;

% plotting time/frequency transform
% ---------------------------------
figure;tftopo(allersp,alltimes(:,:,1),allfreqs(:,:,1),'mode','ave','limits',[nan nan nan 35 -1.5 1.5], ...
'signifs', allerspboot, 'sigthresh', [6], 'timefreqs', [100 10; 300 10; 400 10; 500 10], 'chanlocs', EEG.chanlocs);

```