0

我对 pywavelet 中的小波感到困惑。假设我有一个从 1hz 到 100hz 开始的啁啾信号,我想用开源的 pywavelet 包对其进行分析。理论上,我可以使用任何中心频率 fc,因为它会针对不同的频率分量缩小或拉长母小波。我对吗?但是,当我使用 fc=50 和 fb=1.5 时,绘制功率时会出现别名。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import pywt
from pywt import scale2frequency
from scipy.signal import chirp

# chirp signal
t = np.linspace(0, 10, 10000) # fs=1000, 10s
sampling_period=0.001
chirpdata = chirp(t, f0=1, f1=100, t1=10, method='linear')

# I use below to calculate the scale out of my desired frequencies.
scales=[50.0/(f*sampling_period) for f in np.arange(1,150,2)] 
frequencies=[scale2frequency('cmor1.5-50.0', scale)/sampling_period for scale in scales]

[coefficients, frequencies] = pywt.cwt(chirpdata, scales, 'cmor1.5-50.0', sampling_period)
power = (abs(coefficients)) ** 2

vmin=-4
vmax=4
fig, ax = plt.subplots()
im0=ax.imshow(power,origin='lower',cmap='RdBu_r',vmin=vmin, vmax=vmax)
ax.set_aspect('auto')

请有人帮我解决这个问题。我想使用 50 的中心频率而不是 1hz 的原因是因为我发现频率精度随着频率的升高而降低。

或者如果我的信号频率从 1 到 200hz,我该如何选择我的 fc 和 fb?

4

0 回答 0