一、前言:为什么需要小波变换?
在数据分析、信号处理、图像处理领域,傅里叶变换(FFT)几乎是最常被提及的工具。但它存在一个致命缺陷:
FFT 只能提供频率信息,而无法告诉我们'频率在时间中的位置'。
于是科学家提出了短时傅里叶变换 STFT,但 STFT 固定窗口,无法兼顾高频精度与低频稳定性。
为了实现更灵活的'时频分析',小波变换(Wavelet Transform, WT)应运而生。
小波变换具备以下优势:
- 同时拥有 时间域与频率域的信息
- 在高频部分具有 高时间分辨率
- 在低频部分具有 高频率分辨率
- 更适合 非平稳信号(如心电图、语音、图像、震动信号、股市序列)
Python 中最成熟的小波库就是:
PyWavelets(pywt)
它提供数百种小波基、离散小波、连续小波、多分辨率分解、信号降噪、图像压缩、特征提取等完整功能,是信号处理与图像分析工程的标准库。
二、pywt 库简介
PyWavelets 是一个开源的 Python 小波分析库,支持:
- 离散小波变换 DWT
- 多级小波分解 MRA
- 连续小波变换 CWT
- 小波包变换 WPT
- 图像小波处理(2D DWT)
- 信号降噪(软阈值/硬阈值)
- 信号压缩与重建
- 数百个小波家族
安装方式非常简单:
pip install pywavelets
导入方式:
import pywt
import numpy as np
三、小波变换背后的数学原理(简单直观)
为了让你对 pywt 的操作真正'知其然也知其所以然',先介绍小波变换的基本思想。
1. 小波(Wavelet)是什么?
通俗讲,小波是一种:
- 时间局部化
- 频率局部化
- 平均值为 0
- 可以用于信号的多分辨率表示
的小型振荡函数。
常见小波:
- Haar(最简单的小波)
- Daubechies(db1、db2…db40)
- Symlets(sym)
- Coiflets(coif)
- Morlet(连续小波)
- Mexican Hat(连续小波)
例如 Haar 小波:
_____ | | | |______ __|
它能很好反映信号的跳变位置。
2. 离散小波变换 DWT 的核心
DWT 的核心过程:
- 低通滤波器 → 提取趋势信息(低频部分)
- 高通滤波器 → 提取细节信息(高频部分)
- 每层低频再继续分解
形成多尺度表示:

