如何找到DWT信号变换的频带?
How to find the frequency bands of DWT signal transformation?
我是信号处理的新手,我想找出 Daubechies 小波 'db4' 变换输出的每个电平的频率范围。转换是用 PyWavelets 完成的。
我在 python 中工作,下面的代码输出 5 个细节级别和 1 个近似值,但是我不确定每个级别描述的频率范围。
data = pywt.wavedec(X_train_ch1_raw[0], 'db4', level=5)
你的问题比看起来更棘手。
简短的回答是:使用 pywt 的 scale2freq
内置函数 return 与给定尺度的给定小波关联的频率。例如,下面的代码 returns 是 Daubechies 4 小波的频率,比例为 5 (0.14285714285714285):
import pywt
pywt.scale2frequency('db4',5)
您可以通过计算 db4 小波的中心频率 (0.7142857142857143) 然后除以标度 (5) 得到相同的结果
import pywt
pywt.central_frequency('db4')/5
请注意,这个不是信号的实际中心频率!这个量被称为 伪频率 因为它独立于被分析的信号。
为了恢复信号的中心频率,需要将伪频率除以信号的采样率:
import pywt
pywt.scale2frequency('db4',5)/dt
其中 dt
是您的采样率。
希望对您有所帮助!
PS:我建议绘制重构信号的频谱,让自己相信中心频率与上述解析公式输出的值相匹配。
我是信号处理的新手,我想找出 Daubechies 小波 'db4' 变换输出的每个电平的频率范围。转换是用 PyWavelets 完成的。 我在 python 中工作,下面的代码输出 5 个细节级别和 1 个近似值,但是我不确定每个级别描述的频率范围。
data = pywt.wavedec(X_train_ch1_raw[0], 'db4', level=5)
你的问题比看起来更棘手。
简短的回答是:使用 pywt 的 scale2freq
内置函数 return 与给定尺度的给定小波关联的频率。例如,下面的代码 returns 是 Daubechies 4 小波的频率,比例为 5 (0.14285714285714285):
import pywt
pywt.scale2frequency('db4',5)
您可以通过计算 db4 小波的中心频率 (0.7142857142857143) 然后除以标度 (5) 得到相同的结果
import pywt
pywt.central_frequency('db4')/5
请注意,这个不是信号的实际中心频率!这个量被称为 伪频率 因为它独立于被分析的信号。
为了恢复信号的中心频率,需要将伪频率除以信号的采样率:
import pywt
pywt.scale2frequency('db4',5)/dt
其中 dt
是您的采样率。
希望对您有所帮助!
PS:我建议绘制重构信号的频谱,让自己相信中心频率与上述解析公式输出的值相匹配。