# Band Power calculation

The EmotivPRO Analyzer allows the following operations that involve the pre-processing and bandpower extraction.

- Basic EEG processing
- Basic EEG processing and Transformation
- Individual Band-Power Reports
- Band Power Report

**Limit slew rate :**

This limits the step change between 2 samples. Analyzer applies a slew rate limitation at 30 µV.

**High-pass filter :**

The data is high-pass filtered before performing the fourier transform. We use the following coefficients ( 3dB at 0.5Hz filter):

filter_coeffs": {

"b": [0.96588528974407006000, -1.93177057948814010000, 0.96588528974407006000],

"a": [1.00000000000000000000, -1.93060642721966810000, 0.93293473175661223000]}

**Re-referencing:**Analyzer supports three ways of re-referencing the EEG data. Interquartile mean (IQM), Median, and Mean.

**Hanning Window :**Users can choose a window size of N (e.g. 256) samples and this window by M (e.g. 16) samples to create the new window.

The exact implementation of the Hanning window we use:

hanning_window = []

for i in range(256):

hanning_window.append(0.5 * (1 - np.cos((2.0 * np.pi * (i + 1)) / (256 + 1))))

**Band Powers and Normalization :**

Our normalization uses python and numpy.

Multiplying the Hanning window by 2 (as the window reduces the amplitude of the Fourier transform by a factor of 2 and divide the output of the fft by the window length)

We also subtract the mean of the data for each epoch/window as the DC value is not usable and only distorts the Fourier transform of the lower frequencies.

hanning_window = np.hanning(eeg.shape[0]) * 2

eeg_norm = eeg - np.mean(eeg, axis=0)

eeg_fft = (eeg_norm.T * hanning_window).T

fourier_transform = fft(eeg_fft, axis=0)/eeg_fft.shape[0]

fourier_transform_norm = (2 x fourier_transform) / hanning_window.shape[0]

eeg_fft_square_3d = np.absolute(fourier_transform_norm)**2

band = list(range(16, 25))

band_power = np.sum(eeg_fft_square_3d[band, :, :], axis=0) / len(band)

//Finally EmotivPRO Analyzer will output band power in decibels (dB):

band_power_db = 10*np.log10(band_power))

Last modified 9mo ago