小波变换(Wavelet Transform)原理及介绍

小波变换(Wavelet Transform)原理及介绍

1. 背景

小波变换 (Wavelet Transform) 是为解决傅里叶变换 (Fourier Transform) 无法定位频率时间位置的缺陷而设计的时频分析工具。傅里叶变换擅长提取信号的全局频率成分(如识别乐曲中的音符),但将信号视为无限周期波动,完全丢失时间信息,这对分析非平稳信号(特征随时间变化的信号,如地震波、语音、金融数据)是致命的。20 世纪 80 年代,工程师(如 Jean Morlet 在石油勘探中分析地震信号)和数学家(如 Yves Meyer、Stéphane Mallat)发现,即使改进的短时傅里叶变换 (STFT) 也受限于固定窗口大小,导致时间与频率分辨率不可兼得(高频事件需窄窗但牺牲频率精度,低频需宽窗但模糊时间定位)。

核心突破在于引入可缩放、平移的母小波 (Mother Wavelet):通过缩放因子 调整分析尺度(大尺度捕捉低频概貌,小尺度捕捉高频细节),通过平移因子 精确定位时间点,实现多分辨率分析 (Multiresolution Analysis)。例如,分析一段含短暂高频脉冲(如 0.5 秒的敲门声)的音频时,小波变换能用小尺度(高频)小波在敲门发生的精确时刻产生强响应,同时用大尺度(低频)小波分析背景音乐,真正解决了 “何时出现何种频率” 的问题。

在这里插入图片描述

2. 技术原理

连续小波变换的定义基于一个母小波(mother wavelet)函数,其一般是能量有限、均值为零的短小波形,记为 ψ ( t ) \psi(t) ψ(t)。通过缩放(scale)和平移(translation)得到一组小波基函数:
ψ s , τ ( t ) = 1 s ψ ( t − τ s ) \psi_{s,\tau}(t) = \frac{1}{\sqrt{s}} \psi\left( \frac{t - \tau}{s} \right) ψs,τ(t)=s 1ψ(stτ)其中:

  • s s s 是尺度参数( s > 0 s>0 s>0):通过对母小波进行伸缩变换来生成不同“宽度”的小波。 s > 1 s > 1 s>1:拉伸母小波 -> 低频成分(宽小波,分析信号缓慢变化、整体趋势)。 s > 1 s > 1 s>1:压缩母小波 -> 高频成分(窄小波,分析信号快速变化、细节、突变)。
  • τ \tau τ 是平移参数( τ ∈ R \tau \in \mathbb{R} τR):通过对伸缩后的小波进行时移,让它在时间轴上滑动,分析信号不同时间点的情况。
  • 1 s \frac{1}{\sqrt{s}} s 1 是能量归一化因子,用于保证每个小波基函数的能量(范数)一致,这样比较不同尺度的变换结果才有意义。

对于信号 x ( t ) x(t) x(t) 的连续小波变换定义为与 ψ s , τ ( t ) \psi_{s,\tau}(t) ψs,τ(t) 的内积:
CWT ( s , τ ) = ⟨ x ( t ) , ψ s , τ ( t ) ⟩ = ∫ − ∞ ∞ x ( t ) ψ s , τ ∗ ( t ) d t \text{CWT}(s, \tau) = \langle x(t), \psi_{s,\tau}(t) \rangle = \int_{-\infty}^{\infty} x(t) \psi_{s,\tau}^*(t) dt CWT(s,τ)=x(t),ψs,τ(t)⟩=x(t)ψs,τ(t)dt其中, ψ ∗ \psi^* ψ 表示复共轭(实小波时可省略)。

直观理解:

  1. 固定一个尺度和位置: 想象你拿了一把特定宽度的“小波尺子” ψ s , τ ( t ) \psi_{s,\tau}(t) ψs,τ(t),放在信号的某个时间点 t t t
  2. 测量相似度: 你把尺子覆盖的那一小段信号 x ( t ) x(t) x(t) 和尺子本身 ψ s , τ ( t ) \psi_{s,\tau}(t) ψs,τ(t) 重叠起来。计算它们的点乘(对应位置相乘再求和/积分),这个结果就是 CWT ( s , τ ) \text{CWT}(s, \tau) CWT(s,τ)
  3. 移动尺子: 保持尺子的宽度 s s s 不变,把尺子沿着时间轴 τ \tau τ 一点点滑动,重复步骤2。这样你就得到了信号在该特定尺度(频率带)下,随时间变化的相似度(能量)分布。这相当于一个带通滤波器的输出。
  4. 更换尺子: 现在换一把更宽或更窄的“小波尺子”(改变 s s s),重复步骤1-3。宽尺子(大 s s s,低尺度因子 -> 低频)捕捉信号缓慢变化的大趋势;窄尺子(小 s s s,高尺度因子 -> 高频)捕捉信号的快速变化和细节。
  5. 绘制结果: 最终,你会得到一个二维图像(或系数矩阵):
    • X轴: 时间 ( τ \tau τ)
    • Y轴: 尺度 ( s s s) - 通常用对数坐标表示,大的 s s s(低频)在上方,小的 s s s(高频)在下方。
    • 颜色/亮度: CWT ( s , τ ) \text{CWT}(s, \tau) CWT(s,τ)幅度(绝对值或平方)。亮的地方表示该时间点、该尺度上有强的小波成分。

3. 功能特征

核心功能 1:高分辨率时频分析 (High-Resolution Time-Frequency Analysis)
小波变换的核心优势在于其动态的时频分辨率。通过连续缩放和平移母小波,它能自适应地捕捉信号中不同时间尺度的瞬态特征

  • 高频瞬态事件(如机械故障的冲击、EEG中的棘波、语音中的爆破音):使用小尺度(压缩的)小波,在时间轴上精确定位事件发生的时刻(高时间分辨率),尽管频率分辨率相对较低。
  • 低频缓变成分(如背景振动、ECG中的P/T波、长期趋势):使用大尺度(拉伸的)小波,清晰刻画频率轮廓(高频率分辨率),但时间定位较宽。

示例应用
分析地震信号时,小波变换能:

  1. 小尺度小波准确定位 P波(初至波)和S波(次至波)的到达时间(关键震相识别);
  2. 大尺度小波分析地震波的主频和能量衰减特性,判断震源机制与地层结构。

核心功能 2:稀疏表示与压缩感知 (Sparse Representation & Compressed Sensing)
小波变换能将信号在时频域转换为高度稀疏的系数表示(即大部分系数接近零,少数大系数承载主要信息)。这一特性是两大革命性应用的基础:

  • 数据压缩:丢弃幅度低于阈值的小波系数,仅存储关键系数,即可高保真重建信号(如 JPEG 2000 图像标准的核心算法)。
  • 压缩感知 (Compressed Sensing):在信号采集端直接获取远低于奈奎斯特采样率的观测值,利用小波域的稀疏性先验,通过优化算法(如 l1 最小化)从欠采样数据中精确重建原始信号

示例应用
磁共振成像 (MRI) 中,压缩感知结合小波稀疏性可将扫描时间缩短 5-10 倍:

  1. 随机欠采样K空间数据(傅里叶域);
  2. 建立优化模型:最小化小波系数 l1 范数 + 数据保真项;
  3. 重建高质量MRI图像,显著提升患者体验。

其他重要功能

  • 瞬态事件检测(如电力系统故障、神经尖峰);
  • 信号奇异性分析(如机械裂纹声发射、图像边缘);
  • 信号解相关与特征提取(用于机器学习分类)。

4. 功能 Python 示例 (使用 PyWavelets)

import numpy as np
import matplotlib.pyplot as plt
import pywt

# 示例 1:时频分析 (CWT - 模拟突变信号)
# 生成信号:低频正弦波 + 短暂高频脉冲
fs = 1000  # 采样率 1000 Hz
t = np.linspace(0, 1, fs, endpoint=False)  # 1 秒时间
f1 = 5  # 5 Hz 低频
f2 = 50  # 50 Hz 高频脉冲
signal = np.sin(2 * np.pi * f1 * t)  # 低频主信号
signal[400:450] += 0.5 * np.sin(2 * np.pi * f2 * t[400:450])  # 在 0.4-0.45 秒加入高频脉冲

# 进行连续小波变换 (CWT) - 使用墨西哥帽小波 (mexh)
scales = np.arange(1, 128)  # 分析尺度范围
coef, freqs = pywt.cwt(signal, scales, 'mexh', sampling_period=1/fs)  # 计算CWT系数

# 绘制结果
plt.figure(figsize=(10, 6))
plt.subplot(2, 1, 1))
plt.plot(t, signal)
plt.title('Original Signal with Transient Pulse')
plt.xlabel('Time [s]')
plt.subplot(2, 1, 2))
plt.imshow(np.abs(coef), extent=[0, 1, 1, 128], cmap='viridis', aspect='auto',
          vmax=abs(coef).max(), vmin=-abs(coef).max())
plt.colorbar(label='Magnitude')
plt.title('Continuous Wavelet Transform (Magnitude)')
plt.xlabel('Time [s]')
plt.ylabel('Scale')
# 注意:Scale 与频率成反比,大尺度对应低频
plt.tight_layout()
plt.show()
# 解读:图中会在低频(大尺度)区域看到贯穿始终的亮线(5Hz),
# 在高频(小尺度)区域,仅在 t=0.4s 附近出现明显的亮斑(50Hz脉冲),准确定位了事件!

# 示例 2:信号降噪 (DWT - 模拟含噪 ECG)
# 生成模拟 ECG 信号 (简化版)
def ecg_sim(t, hr=60):
    period = 60.0 / hr
    ecg = np.zeros_like(t)
    # 简单模拟 PQRST 波 (非常简化)
    idx = (t % period) / period
    ecg += 0.5 * np.exp(-50 * (idx - 0.05)**2)  # P 波
    ecg += np.exp(-50 * (idx - 0.2)**2)         # Q 波 (负)
    ecg -= 0.5 * np.exp(-50 * (idx - 0.25)**2)  # R 波 (正)
    ecg += np.exp(-50 * (idx - 0.3)**2)         # S 波 (负)
    ecg += 0.75 * np.exp(-50 * (idx - 0.4)**2) # T 波 (正)
    return ecg

t_ecg = np.linspace(0, 10, 5000)  # 10 秒 ECG
ecg_clean = ecg_sim(t_ecg, hr=75)
np.random.seed(42)
noise = 0.15 * np.random.randn(len(t_ecg))  # 高斯白噪声
ecg_noisy = ecg_clean + noise

# DWT 降噪
wavelet = 'db4'  # 选择 Daubechies 4 小波
level = 4         # 分解 4 层
coeffs = pywt.wavedec(ecg_noisy, wavelet, level=level)  # 分解

# 阈值估计与处理 (使用通用阈值 Universal Threshold)
sigma = np.median(np.abs(coeffs[-1])) / 0.6745  # 估计噪声标准差 (MAD)
threshold = sigma * np.sqrt(2 * np.log(len(ecg_noisy)))  # 通用阈值

coeffs_thresh = [coeffs[0]]  # 保留最底层近似系数 (低频)
for i in range(1, len(coeffs)):
    coeffs_thresh.append(pywt.threshold(coeffs[i], threshold, mode='soft'))  # 软阈值处理细节系数

ecg_denoised = pywt.waverec(coeffs_thresh, wavelet)  # 重构

# 绘制结果
plt.figure(figsize=(12, 8))
plt.subplot(3, 1, 1))
plt.plot(t_ecg, ecg_clean)
plt.title('Clean Simulated ECG')
plt.subplot(3, 1, 2))
plt.plot(t_ecg, ecg_noisy)
plt.title('Noisy ECG')
plt.subplot(3, 1, 3))
plt.plot(t_ecg, ecg_denoised[:len(t_ecg)], 'r')  # waverec 可能返回稍长,截断
plt.title('DWT Denoised ECG')
plt.xlabel('Time [s]')
plt.tight_layout()
plt.show()
# 解读:降噪后的信号 (红色) 有效去除了大部分背景噪声,同时清晰保留了 P, Q, R, S, T 波的尖锐特征。

5. 与其它时频/变换方法对比

特性傅里叶变换 (FT)短时傅里叶变换 (STFT)小波变换 (WT)希尔伯特-黄变换 (HHT)
核心思想全局正弦基加窗局部 FT缩放平移小波基经验模态分解 (EMD) + Hilbert
时间/频率分辨率无时间分辨率,完美频率分辨率固定 (由窗宽决定)可变 (高频时间好/频率差,低频反之)自适应 (数据驱动)
基函数固定 (正弦/余弦)固定 (正弦/余弦 + 窗)灵活可选 (多种小波基)自适应 (IMF)
分析对象平稳信号准平稳信号非平稳信号强非平稳、非线性信号
吉布斯现象存在存在 (紧支撑小波)存在
计算复杂度低 (FFT)DWT 低 (O(N)), CWT 高 (O(N log N))高 (EMD 迭代)
主要应用频谱分析、滤波、解调语音分析、音乐分析故障诊断、图像处理、降噪、压缩、生物医学非线性振动、地质、生物信号
优点计算快,频率定位精确有基本时频定位最优时频局部化,多尺度,基灵活完全自适应,适合非线性/非平稳
缺点无时间信息,不适合非平稳信号分辨率固定,窗效应基选择需经验,边界效应,CWT 计算慢EMD 端点效应、模态混叠、理论待完善

6. 相关或互补技术

小波变换并非孤立存在,以下技术与其在信号/图像处理中形成有力补充或竞争:

  1. 经验模态分解 (Empirical Mode Decomposition, EMD) / 希尔伯特-黄变换 (Hilbert-Huang Transform, HHT)

    • 核心思想自适应地将信号分解为有限个本征模态函数 (Intrinsic Mode Functions, IMF)。每个 IMF 是局部对称的振荡分量,再通过希尔伯特变换获得瞬时频率。
    • 与小波对比
      • 优势:完全数据驱动,无需预设基函数,对强非平稳、非线性信号(如转子碰摩、湍流)的瞬时频率提取更鲁棒。
      • 劣势:EMD 存在端点效应、模态混叠问题,数学严谨性弱于小波;计算效率低且结果可能不稳定。
    • 典型应用:轴承故障振动分析、太阳活动周期预测、生理信号非线性特征提取。
  2. 数学形态学 (Mathematical Morphology)

    • 核心思想:基于集合论与几何结构,利用预定义的结构元素 (Structuring Element) 对信号(或图像)进行膨胀 (Dilation)、腐蚀 (Erosion)、开运算 (Opening)、闭运算 (Closing) 等操作,以提取或抑制特定形状特征。
    • 与小波对比
      • 本质差异:小波是线性频域分析工具,关注频率与时间尺度;形态学是非线性空间/时域操作,关注形状、边缘、拓扑结构
      • 互补性:二者常结合使用(如 形态小波 (Morphological Wavelets)):
        • 小波用于多尺度分解(分离不同频带)。
        • 形态学算子作用于特定子带,增强边缘或抑制噪声(如对高频细节子带进行开运算去除椒盐噪声)。
    • 典型应用:图像边缘检测、颗粒分析、心电图基线漂移校正、文本图像二值化。
  3. 匹配追踪 (Matching Pursuit, MP)

    • 核心思想:从过完备原子库(可包含 Gabor 原子、小波原子、曲波原子等)中贪婪迭代选择与信号残差最匹配的原子进行稀疏逼近。
    • 与小波对比
      • 优势:原子库灵活性极高,可自适应混合多种基函数,获得比单一小波基更稀疏、更精确的表示。
      • 劣势:计算复杂度极高(O(N²)),且贪婪策略可能陷入局部最优。
    • 典型应用:高精度信号稀疏表示、瞬态信号特征提取、音频编码。

7. 总结与启示

小波变换是分析非平稳信号的强有力工具,其核心价值在于多尺度时频局部化能力。通过灵活选择小波基和利用离散/连续变换,它广泛应用于信号降噪、特征提取、数据压缩、奇异性检测等领域。虽然存在基函数选择依赖经验和计算复杂度 (CWT) 等挑战,但其在揭示信号“何时发生何种频率变化”方面的能力使其成为现代信号处理不可或缺的基石。


“观察世界的尺度决定了你看到的现象。” 小波变换教会我们,要理解复杂系统的全貌,需要在不同的时间/空间分辨率下进行观察,既见森林(低频概貌),也见树木(高频细节)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值