请写出一个python的小波变换代码
时间: 2024-05-08 07:15:46 浏览: 4
以下是一个Python小波变换的代码示例:
```python
import pywt
import numpy as np
# 创建一个测试信号
x = np.arange(1, 101)
y = np.sin(x)
# 将信号进行小波变换
wavelet = pywt.Wavelet('haar')
coeffs = pywt.wavedec(y, wavelet)
# 绘制小波系数和重构信号
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(8, 6))
ax.plot(x, y, 'b', label='原始信号')
for i in range(1, len(coeffs)):
ax.plot(x[:len(coeffs[i])], coeffs[i], label='小波系数-{}'.format(i))
ax.legend()
plt.show()
reconstructed_signal = pywt.waverec(coeffs, wavelet)
fig, ax = plt.subplots(figsize=(8, 6))
ax.plot(x, y, 'b', label='原始信号')
ax.plot(x, reconstructed_signal, 'r', label='重构信号')
ax.legend()
plt.show()
```
这段代码使用了PyWavelets库来实现小波变换,首先创建了一个测试信号,使用Haar小波进行小波变换,绘制了小波系数和重构信号。