太好了,阿杰 👍
“Morlet 小波分析(Morlet Wavelet Analysis)” 是信号处理、地震分析、语音识别、脑电(EEG)分析等常用的时频分析工具。
它结合了 傅里叶变换的频域优势 和 小波变换的时域局部化能力,可以揭示信号在不同时间点上的频率变化。
下面我给你讲一个结构清晰、图像化的 Morlet 小波分析详解👇
🎯 一、背景与动机
传统的 傅里叶变换(Fourier Transform) 有个致命问题:
它只能告诉你“信号里有哪些频率”,但无法告诉你这些频率“在什么时候出现”。
➡️ 时域丢失问题:
对于非平稳信号(频率随时间变化),傅里叶变换就不够用了。
Morlet 小波变换(Morlet Wavelet Transform) 就是为了解决这个问题。
它在时域与频域上同时具有局部化特性。
📘 二、Morlet 小波定义
Morlet 小波是由一个复指数函数和一个高斯包络函数相乘得到的。
1️⃣ 连续形式:
[
\psi(t) = \pi^{-\frac{1}{4}} e^{j\omega_0 t} e^{-\frac{t^2}{2}}
]
其中:
- ( e^{j\omega_0 t} ):复正弦波(控制频率)
- ( e^{-\frac{t^2}{2}} ):高斯包络(控制时间局部化)
- ( \omega_0 ):中心角频率,一般取 5~6
➡️ 这使得 Morlet 小波兼具 频率分析能力 和 时间定位能力。
🧠 三、核心思想:伸缩与平移
在小波变换中,我们通过平移(时间位置)和伸缩(尺度变化)来分析信号的不同部分。
Morlet 小波的伸缩和平移形式:
[
\psi_{a,b}(t) = \frac{1}{\sqrt{a}} \psi\left(\frac{t – b}{a}\right)
]
参数解释:
参数 | 意义 |
---|---|
(a) | 尺度参数(scale) → 控制频率(a 越大,频率越低) |
(b) | 平移参数(translation) → 控制时间位置 |
(\frac{1}{\sqrt{a}}) | 归一化,保证能量不随尺度变化 |
🔍 四、Morlet 小波变换公式
信号 ( x(t) ) 的连续小波变换(CWT)为:
[
W(a,b) = \int_{-\infty}^{+\infty} x(t) , \psi_{a,b}^*(t) , dt
]
其中:
- ( W(a,b) ):小波系数(表示信号在尺度 a、时间 b 下的能量)
- ( \psi_{a,b}^*(t) ):Morlet 小波的复共轭
- 通过改变 a、b,我们得到一个 时频图(Time-Frequency Representation)
🌊 五、与傅里叶变换对比
特性 | 傅里叶变换 | Morlet 小波变换 |
---|---|---|
分析对象 | 全局 | 局部 |
时域定位 | ❌ 无 | ✅ 有 |
频域分辨率 | 高 | 随尺度变化 |
适用信号 | 平稳信号 | 非平稳信号 |
核心思想 | 频谱分析 | 时频联合分析 |
🎨 六、可视化理解(概念图)
时间轴 →→→
传统傅里叶:一个整体频谱(全局分析)
Morlet小波:移动的“频率窗口”,局部分析每一段信号
Morlet 小波可以被理解为一个“带有高斯窗的正弦波”,
它在信号上滑动(平移 b),同时可伸缩(调整 a),从而观察信号在不同时间点的频率变化。
🧮 七、Python 实现示例
用 pywt
(PyWavelets)库或 scipy.signal.cwt
进行 Morlet 小波分析。
示例代码:
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import morlet, cwt
# 生成测试信号:频率变化的正弦波
t = np.linspace(0, 2, 400)
x = np.sin(2 * np.pi * 5 * t) + np.sin(2 * np.pi * 20 * t * (t > 1))
# Morlet小波分析
widths = np.arange(1, 64)
cwt_matrix = cwt(x, morlet, widths)
plt.figure(figsize=(10,6))
plt.imshow(abs(cwt_matrix), extent=[0, 2, 1, 64], cmap='jet', aspect='auto',
vmax=abs(cwt_matrix).max(), vmin=0)
plt.title("Morlet Wavelet Transform (CWT)")
plt.ylabel("Scale")
plt.xlabel("Time [s]")
plt.show()
👉 输出的图像显示:
- y轴是“尺度(scale)”或“对应频率”;
- x轴是时间;
- 颜色表示信号能量强度。
📊 八、结果解读
在上面的例子中:
- 前 1 秒信号频率约 5 Hz;
- 后 1 秒信号频率约 20 Hz;
- 小波变换图中可看到“低频高能 → 高频高能”的过渡,非常直观。
🧩 九、Morlet 小波的优缺点
优点 | 缺点 |
---|---|
✅ 适合非平稳信号分析 | ❌ 分辨率受尺度影响 |
✅ 时频联合分析能力强 | ❌ 计算复杂度较高 |
✅ 高斯窗抑制噪声 | ❌ 参数选择(ω₀, scale范围)需经验调整 |
🧭 十、Morlet 小波的应用领域
应用方向 | 示例 |
---|---|
🎧 语音信号分析 | 分析语音音调变化、识别特征频率 |
🧠 脑电(EEG)信号 | 检测脑波频段(α、β、γ波)变化 |
🌋 地震信号分析 | 检测地震波在不同时间的频率演化 |
⚙️ 机械故障诊断 | 识别轴承振动信号的特征频率变化 |
🌊 金融时序分析 | 研究价格波动的短期与长期周期性成分 |
✅ 十一、小结速览
项目 | 内容 |
---|---|
小波类型 | Morlet(复小波) |
定义 | 高斯窗 × 复正弦波 |
参数 | 频率 ω₀、尺度 a、平移 b |
功能 | 时频联合分析 |
实现工具 | Python(scipy, pywt), MATLAB(cwt, morlet) |
发表回复