我想对EEG信号进行时频分析。我找到了用于计算小波系数的GSL小波函数。如何从该系数中提取实际频段(例如8-12 Hz)? GSL手册说:
对于正向变换,原始数组的元素被填充三角形存储布局中的离散小波变换
f_i -> w_{j,k}
替换,其中J
是级别j = 0 ... J-1
的索引K
是每个级别k = 0 ... (2^j)-1
内系数的索引。级别总数为J = \log_2(n)
。输出数据具有以下形式
(s_{-1,0}, d_{0,0}, d_{1,0}, d_{1,1}, d_{2,0}, ..., d_{j,k}, ..., d_{J-1,2^{J-1}-1})
如果我理解正确的输出数组data[]
包含位置1
(例如data[1]
)频段的幅度2 ^ 0 = 1 Hz,并且
data[2] = 2^1 Hz
data[3] = 2^1 Hz
data[4] = 2^2 Hz
until
data[7] = 2^2 Hz
data[8] = 2^3 Hz
依旧......
这意味着我只有1 Hz,2 Hz,4 Hz,8 Hz,16 Hz频率的幅度......我怎样才能获得振荡频率为5.3 Hz的频率分量?如何获得整个频率范围的幅度,例如幅度为8 - 13 Hz?任何建议如何获得良好的时频分布?
答案 0 :(得分:12)
我不确定你对一般的信号处理有多熟悉,所以我会尽量清楚,但不要为你咀嚼食物。
小波基本上是filter banks。每个滤波器将给定信号分成两个非重叠的独立高频和低频子带,使得它然后可以通过逆变换重建。当连续应用这样的过滤器时,您会得到一个过滤器树,其输出为1。构建此类树的最简单,最直观的方法如下:
原因是你可以downsample得到的近似信号。例如,如果您的滤波器将采样频率(Fs)为48000 Hz(最大频率为24000 Hz,Nyquist Theorem - 分为0到12000 Hz近似分量和12001到24000 Hz细节分量的信号,然后,可以在不使用aliasing的情况下获取近似分量的每个第二个样本,基本上是对信号进行抽取。这广泛用于信号和图像compression。
根据此说明,在第一级,您将频率内容分成中间,并创建两个单独的信号。然后你拿下你的低频成分并再次将它分成中间。您现在总共获得三个组件:0到6000 Hz,6001到12000 Hz和12001到24000 Hz。您会看到两个较新的组件都是第一个细节组件带宽的一半。你会得到这样的图片:
这与您在上面描述的带宽相关(2^1 Hz
,2^2 Hz
,2^3 Hz
等等。但是,使用更广泛的过滤器库定义,我们可以根据需要安排上述树结构,它仍然是一个过滤器库。例如,我们可以将两个近似和细节分量输入到分成两个高频和低频信号,如此
如果你仔细观察,你会看到频率中间的高频和低频分量都在中间位置,因此你会得到一个均匀滤波器组,它的频率分离看起来更像这样:
请注意,所有波段都具有相同的大小。通过构建具有N级的均匀滤波器组,您最终得到2 ^(N-1)个带低音滤波器的响应。您可以微调滤波器组,最终为您提供所需的频段(8-13 Hz)。
一般情况下,我不会建议你用小波来做这件事。您可以阅读一些有关设计良好带通滤波器的文献,并简单地构建一个只允许通过8-13 Hz的EEG信号的滤波器。这就是我以前做过的,对我来说效果很好。