1

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

背景:我有 15 个 epoch,长度为 4 秒。该设备以 256 Hz 采样,有 264 个传感器,因此每个 epoch 的每个传感器有 1024 个数据点,即我的原始数据是 264 x 1024 x 15。基线被移除。每个 epoch 中的数据最终将用于训练分类器,因此我将单独处理每个 epoch。稍后我会提出更多的数据样本。

无论如何,到目前为止我所做的是将 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.';

感谢您的帮助!

4

1 回答 1

0

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

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

有关更多信息,请参阅此问题

正确缩放内容后,您可以通过整合从频段开始到结束的内容来找到频段(例如 8 - 13 Hz)的功率。由于您正在处理离散值,因此它是离散集成。从角度来看,这相当于改变频谱分析仪的分辨率带宽。

于 2015-07-08T02:49:05.180 回答