我有一组来自脑电图设备的数据,我想从Matlab中找到不同脑电波的强度。我试着使用EEGLAB,但我不确定如何使用,所以现在我只是使用Matlab中的dsp工具箱。
背景:我有15个周期,4秒长。该装置采样频率为256 Hz,有264个传感器,因此每个时期每个传感器都有1024个数据点,即我的原始数据为264x1024x15。基线被删除。每个时代的数据最终都会被用来训练分类器,所以我要单独处理每一个时代。稍后我会提供更多的数据样本。
无论如何,到目前为止,我所做的是对数据应用一个Hann过滤器,然后对过滤后的数据运行fft。所以现在我得到了频域的信息。然而,我不太确定如何从fft桶的功率到某些频带的功率(例如alpha 8-13),来得到我所寻求的值。
我知道答案应该是直截了当的,但我似乎无法在网上找到我想要的答案,然后一些消息来源进一步混淆了使用小波变换的建议?下面是我到目前为止的一些代码,输入“数据”是一个时代,即264x1024。
% 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.';谢谢你的帮助!
发布于 2015-07-08 02:49:05
如果我正确地理解了你的问题,你想要放大FFT的输出,以获得正确的功率。要做到这一点,您需要除以用于FFT的样本数。
X_mag = abs(X)/length(hann_data); % This gives the correct power.有关更多信息,请参见此问题。
一旦内容被正确地缩放,你就可以通过将内容从开始到停止来找到一个频带中的能量(例如8-13赫兹)。由于您处理的是离散值,所以它是一个离散积分。就透视而言,这相当于改变频谱分析仪的分辨率带宽。
https://stackoverflow.com/questions/31281633
复制相似问题