求和频谱

时间:2015-07-08 00:31:55

标签: matlab spectrum frequency-analysis eeglab

我从EEG设备获取一组数据,我想从中找到Matlab中不同脑电波的强度。我尝试使用EEGLAB,但我不确定如何,所以此时我只是在Matlab中使用dsp工具箱。

背景:我有15个时代,4个星期。该设备以256 Hz采样,并且有264个传感器,因此每个传感器每个传感器有1​​024个数据点,即我的原始数据是264 x 1024 x 15.基线被移除。每个时期的数据最终将被用于训练分类器,因此我将单独处理每个时期。我稍后会提出更多数据样本。

无论如何,我到目前为止所做的是对数据应用Hann过滤器,然后对过滤后的数据运行fft。所以现在我有频域信息。但是,我不太确定如何从fft桶的功率转向某些频段的功率(例如alpha 8-13),以获得我寻求的值。

我知道答案应该是直截了当的,但我似乎无法在网上找到我想要的答案,然后某些来源推荐使用小波变换进一步混淆了吗?这是我到目前为止的一小段代码,输入"数据"是一个时代,即264 x 1024。

% apply a hann window
siz = size(data);
hann_window = hann(siz(2));
hann_window = repmat(hann_window.', siz(1), 1);
hann_data = data.' * hann_window; 

% run fft
X = fft(hann_data, [], 2);
X_mag = abs(X);
X_mag = X_mag.';

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您需要缩放FFT输出以获得正确的功率。为此,您需要除以用于FFT的样本数。

X_mag = abs(X)/length(hann_data); % This gives the correct power.

有关详细信息,请参阅此question

一旦正确缩放内容,您可以通过整合乐队开始到结束的内容来找到乐队中的力量(例如8-13 Hz)。由于您处理离散值,因此它是discrete integration。从透视角度来看,这相当于改变频谱分析仪的分辨率带宽。