绘制含噪信号的小波谱的代码
时间: 2023-10-10 11:14:01 浏览: 34
以下是Python中绘制含噪信号小波谱的代码:
```python
import numpy as np
import matplotlib.pyplot as plt
import pywt
# 生成含噪信号
t = np.linspace(0, 1, 1000, endpoint=False)
x = np.sin(2 * np.pi * 10 * t) + np.sin(2 * np.pi * 20 * t) + 0.5 * np.random.randn(len(t))
# 小波变换
wavelet = 'db4'
level = pywt.dwt_max_level(len(x), wavelet)
coeffs = pywt.wavedec(x, wavelet, level=level)
# 绘制小波谱图
fig, ax = plt.subplots(figsize=(6, 4))
ax.set_title("小波谱")
ax.set_xlabel("时间")
ax.set_ylabel("频率")
for i in range(1, level + 1):
ax.axhline(y=2 ** (-i), color='gray', linestyle='--', alpha=0.5)
cmap = plt.get_cmap('viridis')
colors = [cmap(i) for i in np.linspace(0, 1, len(coeffs))]
for i, c in zip(range(len(coeffs)), colors):
ax.plot(t, pywt.upcoef('d', coeffs[i], wavelet, level=i)[:len(t)], color=c, label=f"小波系数 {i+1}")
ax.legend()
plt.show()
```
这段代码生成含有噪声的信号,使用小波变换将其分解为多个小波系数,并绘制小波谱图,其中横轴表示时间,纵轴表示频率,不同颜色的曲线代表不同的小波系数。