[Eeglablist] Default Overlap in Spectopo / std_spec and PSD vs. FFT

Makoto Miyakoshi mmiyakoshi at ucsd.edu
Wed Apr 15 20:08:01 PDT 2015

Dear Erick,

Yes I remember I was overwhelmed. It's not still clear to me; not even
clear to me if there is a problem. Let me assume that there is no problem
and give you the following explanation.

> whether I should be using the FFT or PSD

std_spec can use matlab FFT. You can find it in std_spec() line 319.

else % fft mode
    if oritrials == 1 || strcmpi(g.continuous, 'on')
        X = bsxfun(@times, X, hamming(size(X,2))');
    if all([ EEG.trials ] == 1) && ~isempty(boundaries), disp('Warning: fft
does not take into account boundaries in continuous data'); end;
    tmp   = fft(X, g.nfft, 2);
    f     = linspace(0, EEG(1).srate/2, floor(size(tmp,2)/2));
    f     = f(2:end); % remove DC (match the output of PSD)
    tmp   = tmp(:,2:floor(size(tmp,2)/2),:);
    X     = tmp.*conj(tmp);
    if strcmpi(g.logtrials, 'on'),  X = 10*log10(X); end;
    if strcmpi(g.savetrials, 'off'), X = mean(X,3); end;
    if strcmpi(g.logtrials, 'off'),  X = 10*log10(X); end;

PSD uses pwelch. spectopo() line 898

if usepwelch
 [tmpspec,freqs] = pwelch(matsel(tmpdata,frames,0,1,e),...


It's up to you whether you want to use FFT or PSD. The difference of the
results from the two methods should derive from the difference from matlab
FFT vs. pwelch (apart from windowing & overlapping issue...) Am I wrong,


On Mon, Apr 13, 2015 at 5:07 PM, Erickson <ericksonb.eng at gmail.com> wrote:

> Hi all,
> When using Spectopo, I was confused about the overlap used by default. I
> did some digging and developed a summary that I think may be useful to
> others, as well as some questions for the listserv.
> There are two functions one could use to extract power spectra information.
> One is Spectopo, which by default calculates the Power Spectral Density
> (PSD). When no "overlap" value is given, the default is [0] in timepoints.
> This could be confusing, since the default of the underlying function
> pwelch() is 50% overlap. However, this is only when pwelch is called
> directly. Overlap must be manually specified when called from spectopo().
> Spectopo() is the function called when using plot->channel spectra and maps.
> The other is std_spec(). When called with the "PSD" option, std_spec()
> calls spectopo with no overlap value. (it will always default to [0] and
> there is no way to specify an overlap.) I am not aware of where this
> std_spec() function is called in the GUI. Can anyone comment on this? Is it
> only available from the "Study" function?
> std_spec() can also be called in FFT mode, in which case it defaults - on
> continuous data only - to 1s epochs with .5s overlap. These variables can
> be set by two options specifying the epoch length and epoch "recurrence".
> This general information was previously covered (
> http://sccn.ucsd.edu/pipermail/eeglablist/2013/006174.html) but the
> discussion was difficult to follow. Correction of any errors I've made is
> appreciated.
> Technical concerns aside, more opaque is the difference between these two
> options - Power Spectral Density vs. FFT.
> In a previous topic I posted, PSD and FFT have been described as both
> essentially equivalent and different by various experts, and the discussion
> was left unresolved: see
> http://sccn.ucsd.edu/pipermail/eeglablist/2014/008224.html
> I am confused, when reporting mean power values across time periods,
> whether I should be using the FFT or PSD options and what the essential
> differences between these frequency domain transformation methods are. I
> think this is a quite essential topic as band power within a time window is
> a core method for reporting condition differences in EEG. Would anyone
> comment on the contrast between PSD and FFT and in which situations either
> should be reported / analyzed?
> Best,
> Brian Erickson
> Creativity Research Laboratory
> Applied Brain and Cognitive Sciences Program
> Drexel University, Department of Psychology
> College of Arts and Sciences
> _______________________________________________
> Eeglablist page: http://sccn.ucsd.edu/eeglab/eeglabmail.html
> To unsubscribe, send an empty email to
> eeglablist-unsubscribe at sccn.ucsd.edu
> For digest mode, send an email with the subject "set digest mime" to
> eeglablist-request at sccn.ucsd.edu

Makoto Miyakoshi
Swartz Center for Computational Neuroscience
Institute for Neural Computation, University of California San Diego
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://sccn.ucsd.edu/pipermail/eeglablist/attachments/20150415/92da6ffa/attachment.html>

More information about the eeglablist mailing list