
简介在电气设备状态检测中微弱信号常被强噪声淹没如何从干扰中提取有效脉冲是关键难题。小波变换凭借多分辨率分析能力能同时定位时域与频域特征成为局部放电信号处理的主流方案。基于小波去噪的分解、阈值、重构三步流程文章详细介绍了小波基选择、分解层数设定、阈值规则和软硬阈值权衡等核心参数并提供了Python代码实现与工程实测经验。对于局放检测中的白噪声、窄带干扰和随机脉冲小波去噪能有效提升信噪比为后续PRPD图谱分析和缺陷诊断提供干净可靠的波形。本文梳理的原理与技巧可供状态检测工程师在电缆、变压器等设备局放监测中直接参考。 做局部放电检测的人十有八九都栽在同一个坑里传感器采回来的信号根本没法直接用。把高频电流互感器夹在电缆接地线上示波器里看到的永远是密密麻麻的毛刺局放脉冲早被噪声埋得不见踪影有时候连有没有放电都判断不了。我以前也被这个问题折磨过很久直到把“小波”这套方法真正吃透才算从噪声堆里把局部放电信号捞出来。这篇东西就围绕局部放电信号的小波处理展开把原理、参数选取、代码实现、现场踩坑一次性讲透适合刚接手状态检测的工程师也适合想把去噪环节重新梳理一遍的老手。1. 局部放电信号为什么难分析——先搞清楚敌人长什么样1.1 局放脉冲到底是什么信号局部放电本质上是绝缘介质内部的气隙、杂质或者导体尖端在强电场作用下发生的局部击穿。每一次局放事件对应一个持续时间极短、上升沿极陡的电流脉冲脉冲宽度从几纳秒到几微秒不等频谱可以铺到几十兆赫兹甚至更高。与此同时脉冲能量非常弱视在放电量通常以皮库pC为单位计量折算到传感器输出端往往只有几百微伏到几十毫伏。关键特征有三个弱信号、宽频带、瞬态出现。弱意味着容易淹没在噪声里宽频带意味着无法靠简单的窄带滤波把信号分离出来瞬态则意味着它在时间轴上是个“孤零零的尖峰”不是持续存在的周期信号。这三个特征凑在一起决定了常规的时域幅值触发和频域滤波思路都很难兼顾效果好和波形失真小。小波处理之所以在局放检测里被广泛采用正是因为它同时照顾到了频域定位和时间定位。1.2 现场噪声的三大来源要对付噪声先得知道噪声有哪些。根据我在变电站和电缆检测现场的经验干扰信号大致可以分成三类。第一类是白噪声类干扰。主要来自变压器本体发热、传感器内部电子器件的散粒噪声、采集卡的本底噪声等。它的频谱平坦宽频带覆盖在时域上表现为随机、均匀、密密麻麻的小幅值毛刺看起来像给整段信号铺了一层“底噪地毯”。第二类是周期窄带干扰。电力线载波通信、广播电台、手机基站信号等会通过空间耦合进入检测回路。这类干扰在频谱上呈现为若干个尖锐的窄带峰值时域上则是叠加在局放脉冲上规律震荡的正弦波幅度可能比局放脉冲还大非常讨厌。第三类是随机脉冲干扰。电晕放电、设备开关操作、接线端子接触不良等都会产生脉冲这类干扰在时域上和真正的内部局放脉冲形态很像都是快速上升、快速衰减的尖峰单靠幅值和时间很难区分必须结合相位分布图谱和统计特征去判别。1.3 传统滤波为什么不够——FFT的局限很多新人上手第一反应就是把信号丢进FFT看看频谱然后做个带通滤波或者窄带陷波。这种做法在实验室里看起来还行一到现场就漏馅。原因很简单傅里叶变换是全局变换它能把信号分解成不同频率的正弦波告诉你“整个信号里有哪些频率分量”但完全丢失了“这些频率在哪个时刻出现”的信息。局放脉冲恰恰是典型的“特定时刻出现的宽频瞬态事件”。如果你用FFT做带通滤波脉冲的上升沿会被大幅平滑峰值被削低相位时刻被延展原本该当作缺陷特征判断依据的脉冲形态细节全丢了。更麻烦的是现场窄带干扰可能落在和你局放信号重叠的频带里FFT域里根本没有干净的切除窗口。这也是小波变换能成为局放去噪主流方案的根本原因它有“时间-频率”二维定位能力既能抓住脉冲出现的时刻又能在对应频带上做细化处理。与其说小波是去噪工具不如说它是给局放脉冲“量身定做”的拆解工具。2. 小波去噪为什么是局放信号的正解2.1 多分辨率分析小波和傅里叶的本质区别用一句话概括小波变换的特点对低频部分用宽窗口、高频率分辨率去看对高频部分用窄窗口、高时间分辨率去看。这种多分辨率特性正好匹配局放信号的物理属性——脉冲主体能量集中在较低频段决定脉冲形状的高频细节集中在极短的时间区间里。小波变换的核心是两个函数尺度函数和小波函数。尺度函数负责构建信号的“骨架”生成近似系数小波函数负责刻画细节生成细节系数。通过逐级分解原始信号被拆分成一层近似信号和若干层细节信号。近似信号反映信号的趋势性结构细节信号则刻画了各个频带上的瞬态变化。打个比方小波分解就像用不同倍率的放大镜观察一张照片。先看整体轮廓再逐级放大看局部纹理。对局放检测来说近似层承载工频背景和慢变趋势细节层则把脉冲突变从背景中分离出来——噪声和信号在这个“放大镜系统”里会被明显区分开。2.2 DWT与SWT一个影响波形保真度的关键选择离散小波变换DWT是工程里最常见的实现方式Mallat算法通过逐级二抽取降低数据量计算高效适合批量处理。但DWT有个隐蔽的弱点平移不变性差。意思是如果信号在时间轴上稍微平移几个采样点分解出来的各层系数会有明显变化阈值处理后重构出来的波形可能产生畸变。这个特性对普通语音、图像去噪问题不大但对局放波形分析就有影响了尤其当你需要精确测量脉冲上升沿、脉冲宽度和峰值到达时刻时DWT造成的微小畸变会直接拉低参数精度。所以我在实际项目中更推荐用平稳小波变换SWT也叫冗余小波变换或非降采样DWT。SWT每一层都不做降采样近似系数和细节系数长度始终和原始信号一致分解结果具备平移不变性。代价是计算量明显增大内存占用和耗时都涨了不少。如果处理的是离线数据、或者对实时性要求不太苛刻的场景优先考虑SWT如果是嵌入式设备上做实时连续采集再退回到DWT并配合一些补偿手段。2.3 去噪三部曲分解、阈值、重构小波去噪的完整流程业内总结为“三部曲”第一步分解。选择合适的小波基和分解层数把含噪信号分解为近似系数和若干层细节系数。第二步阈值处理。核心假设是真实信号在小波域的系数偏大且稀疏噪声在小波域的系数偏小且分布均匀。设置一个阈值大于阈值的系数认为是信号保留或收缩小于阈值的系数认为是噪声直接置零或压缩。第三步重构。对所有处理后的系数做逆变换得到去噪后的时域信号。这套逻辑听起来简单但真正的工程难点全在“参数”上——小波基选哪个、分解几层、阈值怎么算、用软阈值还是硬阈值。这些参数稍有差池去噪效果能差出一整个数量级。下面单独开一节把这些参数选择的门道讲清楚。3. 参数选取小波基、分解层数、阈值规则的工程经验3.1 小波基怎么选——不是越复杂越好小波基是去噪的“模板”选型原则要考虑正交性、消失矩以及时域波形与局放脉冲的匹配度。我实测下来Daubechies族db系列和Symlets族sym系列在局放去噪里用得最多尤其是db4、db6、sym4、sym8这几种。db4和sym4的消失矩比较适中既能较好地匹配局放脉冲的单极性尖峰形状又不会因滤波器过长而在脉冲前后产生拖尾振荡。Haar波db1太粗糙对光滑脉冲的拟合能力差db10以上的高阶小波滤波器太长反而容易在脉冲附近引入额外的伪振荡。经验做法是用现场采集的一段真实含噪信号分别选用db4、db6、sym4、sym8做一轮预处理对比结合后面会说到的量化指标选效果最好的那个。别迷信某一个固定基不同电缆、不同放电类型、不同采样率最优小波基可能都不一样。还有一个容易忽略的点如果后续要做PRPD图谱和缺陷类型识别尽量选择正交性强的小波基因为它能保证分解重构过程没有冗余信息处理后的图谱更干净。3.2 分解层数怎么定分解层数太少噪声滤不干净层数太多计算量成倍增加而且会把信号的高频细节也当成噪声抹掉。合理的选择依据是局放信号的频带范围和你设定的采样率。举个例子采样率是100MS/s根据奈奎斯特定理可分析频带是0~50MHz。如果局放主能量集中在10MHz以下那做4层分解就够了——因为第4层细节系数覆盖的频率范围大概是6.25MHz~12.5MHz再往下的分解层已经基本是噪声主导区。如果采样率降到20MS/s可分析频带0~10MHz那3~4层也足够。一般情况下采样率50MS/s以上时分解层数取4~6层是稳妥区间。最简单的验证方法做一次分解后把每一层细节系数的能量分布画出来如果最高几层细节系数的能量几乎全是噪声那就说明层数可以减了。盲目堆层数不仅浪费时间还会引入不必要的计算误差。3.3 阈值规则怎么定阈值规则决定了“多大的系数算噪声”。常见的规则有四种规则特点局放应用评价固定阈值VisuShrink阈值大小只和信号长度有关与信号本身不匹配噪声强时容易把弱脉冲也干掉不推荐无偏风险估计SureShrink根据各层系数的风险最小化原则动态定阈值偏保守对弱信号友好局放场景优先考虑启发式阈值Heursure结合固定阈值和SureShrink信噪比高时偏固定低时偏Sure中等信噪比时表现尚可可做备选极大极小阈值Minimax最小化最大估计误差阈值偏小去噪力度偏弱适合干扰很轻的场合实际定阈值时噪声标准差σ通常用第一层细节系数的绝对中位差MAD来估计σ median(abs(d1)) / 0.6745。这个公式是从高斯噪声特性推出来的实测稳定。然后以σ为基础代入选定的规则计算最终阈值。我个人的习惯是第一层到第三层用SureShrink更深的细节层按固定阈值或SureShrink的1.2~1.5倍加大一点。因为深层细节里既有信号分量也有噪声稍微加大阈值能保住主要脉冲形态又不至于让深层噪声在重构后污染基线。3.4 阈值函数软阈值与硬阈值之争阈值函数有两种基本形态每种都有代价。硬阈值大于阈值的系数原样保留小于的直接置零。优点是峰值幅值保真度高缺点是重构后在脉冲附近容易产生振铃和伪吉布斯振荡波形不够自然。软阈值大于阈值的系数向零收缩一个阈值量小于的置零。优点是波形光滑、没有额外振荡缺点是脉冲峰值会被系统性地压缩导致放电幅值被低估。站在后续分析角度看我推荐软阈值或折中的garrote阈值。局放检测最终往往要做PRPD图谱软阈值对图谱形态的干扰最小虽然峰值略有降低但趋势特征完整。硬阈值在幅值测量场景下或许能多保一点峰高但振铃波形会把脉冲宽度和上升沿测值扰乱得不偿失。如果是高精度定量分析可以试试“分层混合阈值”第一层硬阈值保住脉冲主体深层用软阈值压噪声。这个组合在我处理电缆局放数据时效果很不错。4. 完整实操从原始波形到干净脉冲4.1 数据采集与预处理在进入小波去噪之前信号预处理效率直接决定去噪效果。第一步确认采样率和记录窗口。用HFCT传感器时常见的采样率是100MS/s记录长度按工频周期取整通常一个文件记录20ms或40ms这样后续可以和相位信息对应起来做PRPD图谱。第二步去除直流分量。工业信号普遍带有直流偏置直接做小波分解会产生一个较大的近似分量影响后续阈值估计。用信号减去均值即可如果存在趋势性漂移可以先做一次高通滤波或拟合基线再减去。第三步针对窄带干扰做前置压制。如果频谱图上有明显的窄带尖峰建议先用FFT域陷波或自适应滤波把窄带干扰压下去再进入小波去噪流程。不需要完美消除压到不太干扰小波系数阈值判断的程度就行。第四步分段处理。长记录文件不要一次全喂给小波去噪建议切成1024、2048或4096点一帧逐帧处理。这样做既方便程序批处理也避免整段信号的全局阈值掩盖局部弱放电脉冲。帧长太短会损失频带分辨能力太长则弱脉冲可能被平均掉我一般是2048点起步根据现场信号密度再调整。4.2 一套可直接复用的Python去噪流程这里给出一套我常用的Python流程用PyWavelets库实现。流程包括SWT分解、MAD噪声估计、分层阈值处理和重构。import numpy as np import pywt def pd_wavelet_denoise(signal, waveletsym4, level4, modesoft): 局部放电信号小波去噪 signal: 一维时域信号建议先去除直流和窄带干扰 wavelet: 小波基默认sym4 level: 分解层数默认4 mode: 阈值函数类型soft / hard / garrote # 去除直流分量 signal signal - np.mean(signal) n len(signal) # 使用平稳小波变换SWT平移不变性好波形保真度高 # 注意SWT要求信号长度可被2^level整除必要时先做零填充 pad_len (2 ** level - n % (2 ** level)) % (2 ** level) if pad_len 0: signal np.pad(signal, (0, pad_len), modereflect) coeffs pywt.swt(signal, wavelet, levellevel) # 返回 [(cA, cD), ...] # 用第一层细节系数估计噪声标准差 sigma np.median(np.abs(coeffs[0][1])) / 0.6745 thr_base sigma * np.sqrt(2 * np.log(len(signal))) coeffs_th [] for idx, (cA, cD) in enumerate(coeffs): # 对深层细节适当放大阈值压制深层残留噪声 factor 1.0 0.2 * idx thr thr_base * factor if mode garrote: # garrote阈值折中软硬阈值峰值保留较好振荡较小 cD_th np.where(np.abs(cD) thr, cD - thr**2 / cD, 0.0) else: cD_th pywt.threshold(cD, thr, modemode) coeffs_th.append((cA, cD_th)) # 重构并截断回原始长度 rec pywt.iswt(coeffs_th, wavelet) return rec[:n] # 使用示例 # clean_pd pd_wavelet_denoise(raw_signal, waveletsym4, level4, modesoft)几点说明我用的是pywt.swt而不是wavedec就是因为SWT的去噪结果在脉冲形态保留上更稳。如果你的信号比较长、实时性要求高可以把swt改成wavedec代价是可能出现轻微平移畸变。阈值处理时近似系数cA保持原样不动因为那里承载的是低频背景和工频成分阈值处理会把信号的大尺度结构弄坏。阈值函数里我加了garrote选项这是一个经常被忽视但实际很顺手的折中方案适合既要保幅值又不想要振铃的场景。别忘了做去均值这一步否则第一层细节系数的MAD估计可能被直流偏置带偏。4.3 去噪效果怎么评价——别只盯着SNR很多人用仿真信号测试去噪效果时只算一个SNR就说OK到了现场数据却完全懵了。原因很简单现场没有“干净参考信号”SNR根本算不出来。我建议从四个维度综合评价一是时域波形检查。看基线是否干净脉冲周围是否出现额外振荡脉冲峰值是否被过度压制。这是最直观的。理想效果是“噪声明显变淡、脉冲依然耸立”。二是频спектр对比。做FFT观察局放频带内信号是否保留、带外噪声是否被压下去。如果频带内也糊成一片说明阈值选大了。三是PRPD图谱质量。把去噪前后的信号按工频相位、幅值、放电次数画成散点图看图谱是否从“漫天星”变成清晰聚类的狐狸尾巴、兔子耳朵等典型形态。这一步往往是现场判断缺陷类型的关键。四是波形相关性。如果有干净的参考脉冲可以计算去噪波形和参考波形的归一化互相关系数NCC越接近1说明波形越保真。拿NCC配合SNR一起用能最大限度避免“去噪效果好但波形变了”的尴尬。5. 常见问题与排查技巧实录5.1 去噪不彻底或者去过头怎么判断“去噪不彻底”很容易识别重构后的信号基线还是毛茸茸的PRPD图谱背景点依旧很多。这时优先检查阈值规则把SureShrink换成固定阈值、或者把阈值乘个1.1~1.3的系数再试试。很多时候不是规则不对而是噪声标准差估计被强窄带干扰带偏了导致阈值整体偏低。先把窄带干扰压下去MAD才能反映真实噪声水平。“去过头”则表现为脉冲峰值明显变小原本该是尖锐的脉冲变得圆润甚至部分弱放电直接消失。这时候要果断调小阈值系数或者把软阈值改成garrote。另外留意一点如果信号帧本身信噪比就很低不要追求“绝对干净”宁可稍微保留一点底噪也别把弱放电信息抹掉——局放检测的核心目标是找缺陷不是做图像美化。5.2 重构波形出现振铃和伪脉冲振铃一般有三个原因硬阈值、消失矩过高的小波基、分解层数过多。排查顺序也是按这个来。先看阈值函数把硬阈值换成软阈值或garrote振铃通常能压下去大半再检查小波基如果用了db8以上或者消失矩很高的波换回sym4或db4最后看分解层数把6层降到4层试试。这套组合拳我现场验证过很多次能解决九成以上的振铃问题。还有一种情况是重构后出现了“伪脉冲”——原本没有脉冲的位置多了个小尖峰。这往往是硬阈值在小波系数上产生的截断效应或者SWT边界效应导致。处理办法是处理前做边缘反射延拓代码里已经用了reflect模式处理后丢弃延拓部分避免边界伪脉冲影响分析。5.3 实时处理扛不住怎么办SWT计算量大对实时在线监测设备不太友好。这里给三个方向。第一降到DWT。在DWT下Mallat算法的计算复杂度是O(N)比SWT低很多。多付出一点波形保真的代价换来实时性很多场景是划算的。第二窗口滑动复用。把上一帧分解得到的系数缓存下来新窗口只增量更新近似系数避免每帧都从头分解。第三阈值计算简化。MAD要排序取中位数实时系统里可以用分位数近似或固定经验阈值替代。比如现场观察一段时间手动定一个相对稳定的σ值省去每帧重新估计的耗时。实测在嵌入式设备上这个改动能把单帧处理时间压缩一半以上。5.4 现场数据和仿真效果差距大问题出在哪实验室仿真里信号干净、噪声单一参数随便调调都能看到漂亮效果。现场数据一进来白噪声、窄带干扰、随机脉冲混在一起原来那套参数立刻失灵。我遇到过太多这种情况核心原因是模型信号和真实信号存在形态差异以及现场干扰不是理想白噪声。解决思路是“分而治之”先用FFT谱分析识别窄带干扰并做陷波再用小波去噪处理白噪声最后用相位开窗和PRPD图谱统计来剔除随机脉冲干扰。三步各司其职千万指望小波一步把所有干扰全部干掉。另外一点经验现场调参时先用一段信号把参数确定下来然后连续用几十段数据做验证确认稳定性后再批量跑。临时凑出来的一组好参数很可能只是运气好。6. 最后分享几个实测体会做局放小波去噪这几年我的体会是参数永远比算法本身重要。算法框架大家都差不多——分解、阈值、重构真正拉开差距的是你对现场信号的理解是你用什么小波基配合什么阈值规则去贴合这种信号。很多论文里的创新算法看着花哨拉到现场跑一遍稳定性还不如sym4加SureShrink的成熟组合。另外小波去噪不是终点它只是局放检测里的一环。真正有价值的不是“噪声去得干不干净”而是去噪之后你能不能从PRPD图谱里识别出缺陷类型、能不能准确定位、能不能给出可信的放电量数值。去噪效果再华丽后续诊断环节用不上也是白搭。先想清楚下游要什么再回来调去噪参数这个顺序别搞反。最后一个小技巧做批量数据处理时把每段数据去噪后自动保存三样东西——原始信号缩略图、去噪信号缩略图、PRPD图谱截图。现场排查问题时翻图比翻数据效率高得多而且方便和别人沟通。工欲善其事必先利其器这套习惯我从一开始就坚持后来帮了不少忙。本文还有配套的精品资源点击获取