PD 信号去噪学习笔记(TI‑DWT + 模极大值 + SVM)
在这里插入图片描述1. 背景与目标
论文《Partial discharge signal denoising with spatially adaptive wavelet thresholding and support vector machines》针对局部放电(PD)在线检测的强噪声环境,提出结合平移不变小波与模极大值连线、再用 SVM 判别的去噪方法。
2. 算法核心思想(对应论文)
- • 不做下采样,系数长度与原信号一致,脉冲不会因移位被抹平。
- • 6 层
db4:覆盖 PD 主能量频段,同时兼顾时间分辨率。
- • 在每层细节系数 |cD_j| 上,用邻域比较找出局部极大值。
- • 极大值位置反映突变点(脉冲边缘),幅值反映该尺度能量。
- • 以层 j 的极大值为起点,在层 j+1 的支撑窗口内寻找匹配点,形成一条“最大值线”。
- • PD 产生的线通常“尖—宽—再尖”的锥形传播,且幅值随尺度递减;噪声线短且不连续。
- • 特征:跨尺度幅值向量、长度、幅值衰减斜率、能量占比等。
- • 分类:RBF 核 SVM,交叉验证选 C/γ,正负样本加权缓解不平衡。
- • 将判为 PD 的线对应的系数置为原值/加权累计,噪声线置零,形成显著性矩阵。
- • 通过 TI-IDWT 重构波形,得到去噪结果,保留脉冲幅度与形状。
- • 起始层 j_0 由能量分布或经验选取(论文示例落在第 4 层附近)。
- • 与传统阈值相比,此法在空间-尺度维度做“结构化保留”,对脉冲保持度更高。
3. 代码实现要点
- • 信号生成(
src/signal_models.py):阻尼振荡 PD 脉冲(alpha/beta/ω、极性与幅度差异可调),叠加三类噪声:高斯、AM 正弦、脉冲噪声;计算 SNR。 - • 小波与模极大值(
src/maxima.py): - •
maxima_per_level 寻找 |cD| 局部极大值。 - •
link_maxima_lines 按尺度窗口将极大值连接成线。
- • 去噪管线(
src/pd_denoiser.py): - 3. 线特征 → SVM 训练/预测(含类权重、交叉验证)
- • 基线(
src/baselines.py):TI-DWT + Universal 阈值,供 Fig.11 对比。
4. 复现实验与可视化
- •
python -m src.demo:生成含噪信号、运行基线与论文方法,输出 SRER / 互相关 / PAD 指标。 - •
python -m src.visualize:批量生成与论文对应的图(Fig.2,3,4,5,6,7,10,11),结果保存在 figs/。 - • Fig.10:PD 脉冲 + 归一化功率谱(MHz)。
- • Fig.11:含噪信号 vs Baseline vs 本文方法的时域对比。
- • Fig.6 & Fig.7:PD / 噪声的模极大值分布与 3D 传播线。
- • Fig.3/4/5:频带划分、六层模值、能量分布。
5. 交互式 GUI
运行 python -m src.gui_maxima_compare,即可对比同一信号的三个阶段及噪声:
- • 中2:去噪 PD(denoised,db4 六层 TI-DWT + 模极大值 + SVM)
- • 右:纯高斯噪声
每块含 3 子图:原始波形、模极大值 3D 柱线、模极大值传播线 3D。中文字体已配置避免方块字。
数据流保持同源:clean → noisy(叠加噪声)→ denoised(对 noisy 去噪)。
6. 关键参数与调优提示
- • 小波基/层数:
db4, level=6(论文配置)。 - • SVM:RBF 核,网格搜索 C/γ,正负样本加权。
- • 模极大值连线窗口:与小波支撑长度一致(db4 的 dec_len)。
- • 频谱与能量:Fig.3/5 可辅助起始层选择(主能量集中层)。
- • 可视化纵轴:PD 波形典型范围 [-0.3, 1.0];频谱归一化至 ~0.015 量级。
7. 使用步骤速览
python -m src.visualize # 生成全部论文风格图像到 figs/
python -m src.demo # 跑基线 & 论文方法,输出指标
python -m src.gui_maxima_compare # 打开交互式模极大值对比 GUI
8. 后续工作设想
- • 增加更多基线(改进阈值、深度模型)与标签可视化;