ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

小波包变换谐波电流检测:db10、MATLAB实现与参数避坑

小波包变换谐波电流检测:db10、MATLAB实现与参数避坑 简介围绕小波包变换在电力系统谐波电流检测中的应用这份PDF文献面向电气工程、电力系统自动化方向的学生、科研人员与工程技术人员可用于补足小波变换、小波包变换基础理论并理解谐波电流检测、时频分析与仿真验证的完整思路。内容先对比傅里叶变换、短时傅里叶变换与小波变换在非平稳信号分析上的差异再说明小波包变换如何对频带均匀划分、提升高频段分辨率进而从基波与高次谐波分离、异常检测、系统诊断等角度讨论其在谐波治理中的价值。资源包为单个PDF文档体积约225KB适合作为课程论文、毕业设计或工程方案中的参考文献。文献原载《现代电子技术》2015年第38卷第5期作者为陈吉、商红桃研究获江苏省高等学校「青蓝工程」项目支持含理论推导与仿真结果可帮助读者建立谐波检测方法选型的判断依据。目前已有108人学习。1. 录波仪记下电弧炉起弧那一瞬几十毫秒内电流从几百安培窜到几千安培又落回去。这段波形丢进 FFT5 次、7 次谐波幅值清楚可要问谐波在哪一刻越限FFT 答不上来它只给一整段平均谱。小波包变换在电力系统谐波电流检测里的价值就在这儿用 db10 把 50Hz 基波与 3、5、7、9 次谐波在频带上均匀切开逐带重构成时域波形看清每一刻各次谐波幅值。做电能质量监测、谐波治理装置选型、继保录波二次分析的人这套流程值得拆一遍。下面从频带划分的数学机理讲起落到 MATLAB 仿真代码最后说几个真会翻车的参数。2. 从小波变换到小波包频带均匀划分到底改了什么2.1 傅里叶与短时傅里叶在谐波检测里的盲区传统谐波分析走 FFT把一整段录波当成周期无限的平稳信号。问题在于现场录波里电弧炉起弧、变频器投切这几百毫秒恰恰是谐波畸变最重的区间而 FFT 只输出一整段的平均频谱。哪个时刻谐波超了限值它答不上来。就算做加窗插值、做同步采样修正本质仍是把时间信息积分掉了。STFT 加了窗能把频率成分定位到时间轴上但窗长一旦定死时频分辨率就同时锁死。窗选窄频率分辨率下降50Hz 和 150Hz 在谱上糊成一片窗选宽时间定位变糊冲击点被抹平。基波和低次谐波间隔只有 100Hz用固定窗很难两头兼顾。这个矛盾不是调参能解决的是 STFT 定义本身就带着的。2.2 小波变换的伸缩平移与多分辨率分析小波变换换了个基。不再用固定窗用一族可伸缩、可平移的母小波 ψ(t)连续小波变换写作W(a,τ) ∫ f(t) · (1/√a) ψ*((t-τ)/a) dta 是尺度因子控制伸缩τ 是平移因子控制位置。a 变大小波被拉伸时间窗变宽、频率窗变窄适合盯低频a 变小反过来。这就得到了低频宽窗、高频窄窗的自适应时频窗不再像 STFT 那样一刀切。落到离散实现就是 Mallat 分解金字塔每层用低通滤波器 h 和高通滤波器 g 对上一层近似系数滤波再二抽取得到本层近似系数 a 和细节系数 d。第 j 层近似分量占 [0, fs/2^(j1)]细节分量占 [fs/2^(j1), fs/2^j]。低频段每层减半、越分越细高频段从第一层之后就不再细分。麻烦就出在这儿。电力系统的 5 次、7 次、9 次谐波全在 250~450Hz 这一带落在小波变换的高频区间里分辨率到这儿就停住了。要做谐波治理这精度不够。2.3 小波包变换的高频再分解小波包变换的改动很直接不再只对低频近似分量继续分解而是对每一层的低通和高通输出都接着往下分。第 j 层得到 2^j 个子带每个子带宽度统一为 fs/2^(j1)频带均匀铺满 [0, fs/2]。这就是均匀划分的含义也是它相对普通小波变换的关键区别。代价有两块计算量随层数指数增长以及要额外决定分到哪一层、哪些节点保留哪些丢掉。后者就是最佳小波包基的选择问题论文用最小描述长度准则来处理。方法时间定位频率分辨率高频段细分非平稳信号适应性计算量FFT无全局一致不细分差低STFT有固定窗固定不细分一般中小波变换有自适应低频高、高频低不再细分较好中小波包变换有自适应各子带均匀逐层细分好高提示小波包变换并不是在所有场景都优于小波变换。如果关心的频段集中在低频普通小波变换更省算力。只有当被检测的谐波落在中高频、且带宽间隔又比较窄时小波包的均匀频带划分才有明显收益。2.4 频带翻转一个容易被忽略的细节小波包每层分解都伴随二抽取高通支路滤波后再下采样会引起频谱镜像导致同一层各节点的实际频率顺序与节点编号顺序不一致。3 层时实际频序是 0、1、3、2、6、7、5、4。后面做节点到谐波次数的映射时如果直接按 n 递增去对应频带3 次和 5 次谐波会互相对调整段分析结论就错了。3. db10 小波包基的选取与分解重构的 MATLAB 落地3.1 分解与重构的递推公式设 d_j^n 表示第 j 层第 n 个节点的小波包系数h、g 分别是尺度滤波器和小波滤波器满足 g[k] (-1)^k h[N-1-k]。分解递推式d_j^{2n}[k] Σ_m h[m-2k] · d_{j-1}^n[m]d_j^{2n1}[k] Σ_m g[m-2k] · d_{j-1}^n[m]父节点经过低通、高通两条支路分别滤波再二抽取就得到两个子节点。重构递推式d_{j-1}^n[k] Σ_m h[k-2m] · d_j^{2n}[m] Σ_m g[k-2m] · d_j^{2n1}[m]两个子节点分别上采样、滤波再相加还原成父节点。论文里那组带上下标的公式实质就是这两式的等价写法。理解这两步之后代码里的 wpdec 和 wprcoef 就不再是黑盒。3.2 MDL 准则与 db10 的选择理由在全部小波包基中能让给定信息代价函数取最小的那组基称为最佳基。论文用的是最小描述长度准则把不分解和继续分解两种情形的代价放在一起比较取小者。完整形式不必细究工程结论才是重点在标准正弦交流条件下对各类小波函数逐个算描述长度db10 最小。db10 属于 Daubechies 系列紧支撑、正交滤波器系数长度 20。系数越长滤波器过渡带越窄、频带分隔越干净代价是时域支集变长边界处的失真范围也会跟着变大。我一般不会只跑一个 db10 就下结论常见做法是拿 db4、db10、db20 各跑一遍比较同一节点的能量集中度再确定最终用的基。3.3 MATLAB 分解与单节点重构% 小波包分解与单节点重构db103 层 clear; clc; fs 1024; % 采样频率 Hz需满足 9 次谐波 450 Hz 的 Nyquist 要求 N 1024; % 采样点数 t (0:N-1)/fs; % 谐波电流模型基波 3/5/7/9 次 f sin(100*pi*t) ... % 50 Hz 基波 0.2*sin(300*pi*t 0.1*pi) ... % 3 次 0.1*sin(500*pi*t 0.2*pi) ... % 5 次 0.2*sin(700*pi*t 0.3*pi) ... % 7 次 0.05*sin(900*pi*t 0.4*pi); % 9 次 wavename db10; lev 3; T wpdec(f, lev, wavename); % 建小波包树默认 Shannon 熵 for n 0:2^lev-1 rec wprcoef(T, [lev n]); % 只重构第 n 个节点到时域 band_lo n * fs / 2^(lev1); % 该节点理论下边频 band_hi (n1) * fs / 2^(lev1); fprintf(节点 (%d,%d) 频带 %d-%d Hz能量 %.4f\n, ... lev, n, band_lo, band_hi, sum(rec.^2)); end这段代码的思路是wpdec 按 db10 建树wprcoef 只把某一个节点重构回时域等价于带通滤波并保留下采样前的时域信息这是把某一段谐波单独拿出来看的关键操作。参数说明fs 决定每个节点的带宽3 层分解时带宽为 fs/2^(31) 64 Hzwavename 决定滤波器长度db10 长度 20过渡带窄但边界影响范围也大lev 层数越高频带越细但每增加一层计算量翻倍且子带内点数减半wpdec 默认按 Shannon 熵构造若要按 MDL 选基需自定义熵函数或改 threshold 参数。注意wpcoef 返回的是小波系数wprcoef 返回的是重构到时域的波形。做能量统计和幅值读取时统一用 wprcoef 的结果否则不同节点之间尺度不同数值没法直接比。% 基波分离非基波节点系数置零后整树重构 T2 T; for n 1:2^lev-1 T2 write(T2, cfs, [lev n], zeros(size(wpcoef(T, [lev n])))); end fund wprec(T2); % 整树重构得到纯基波分量 fprintf(基波分量峰值%.4f\n, max(abs(fund)));write 把指定节点的系数写回树zeros 生成同尺寸零系数wprec 做整树重构。三步合起来就是把 3、5、7、9 次全部滤掉只留 50Hz 基波用来验证基波提取精度。反过来保留想要的那一个节点、其余置零就能得到任意单次谐波的时域波形。4. 谐波电流检测仿真频带映射、重构分离与能量校验4.1 谐波模型与采样参数设定论文的谐波模型是 50Hz 基波叠加 3、5、7、9 次幅值分别为 0.2、0.1、0.2、0.05各带初相位。这种构造方式能直接验证算法对不同幅值、不同相位谐波的分离能力。fs 取 1024Hz、N 取 1024对应录波长度 1 秒。要留意一处现场不会这么用的地方9 次谐波 450HzNyquist 频率 512Hzfs 1024 只留了 62Hz 裕量。实际工程中谐波监测通常要覆盖到 25 次甚至 50 次按最高次谐波倒推采样率一般取 5kHz 至 10kHz再用抗混叠滤波器把高于 fs/2 的分量压下去。论文的 fs 是为了仿真演示方便直接照搬到现场会出问题。4.2 三层分解后的频带与谐波映射3 层分解得到 8 个节点每节点带宽 64Hz。考虑 2.4 节说的频带翻转各节点与谐波的对应关系如下。节点频序频率范围 /Hz落入的谐波(3,0)0-6450 Hz 基波(3,1)64-128无(3,3)128-192150 Hz 3 次(3,2)192-256250 Hz 5 次(3,6)256-320无(3,7)320-384350 Hz 7 次(3,5)384-448无(3,4)448-512450 Hz 9 次3 次谐波落在节点 (3,3) 而不是 (3,2)正是频带翻转的直接表现。批量脚本里如果按节点序号直接推算中心频率去对谐波次数这一处会把 3 次和 5 次调换。稳妥写法是先用一段已知单频正弦测出每个节点的实际响应频带再建映射表。4.3 重构分离与能量占比验证% 各节点重构信号能量占比用于校验谐波分离效果 E zeros(1, 2^lev); for n 0:2^lev-1 rec wprcoef(T, [lev n]); E(n1) sum(rec.^2); end E_ratio E / sum(E) * 100; [~, idx] sort(E_ratio, descend); fprintf(能量占比 Top3 节点\n); for k 1:3 n idx(k) - 1; lo n * fs / 2^(lev1); hi (n1) * fs / 2^(lev1); fprintf( 节点 (%d,%d) %d-%d Hz占比 %.2f%%\n, ... lev, n, lo, hi, E_ratio(n1)); end % 单独提取 5 次谐波只保留节点 (3,2) T5 T; for n 0:2^lev-1 if n ~ 2 T5 write(T5, cfs, [lev n], zeros(size(wpcoef(T, [lev n])))); end end h5 wprec(T5); fprintf(5 次谐波重构峰值%.4f理论值 0.1\n, max(abs(h5)));先遍历全部节点算能量占比用于判断能量是否集中在预期的几个频带上再单独保留节点 (3,2) 做整树重构得到 5 次谐波的时域波形和理论幅值 0.1 对照。判断重构是否正确的常用做法有三条幅值对照重构波形的峰值应接近模型给定幅值偏差主要由边界效应和滤波器不理想引起频率对照对重构波形再做一次 FFT主峰应落在目标频率上别无杂散能量守恒全部节点能量之和应接近原信号总能量差值就是边界和滤波器损失。实际测试里中低频节点基波、3 次的重构幅值偏差通常在 1% 以内越往高频、越靠近边界偏差越明显9 次谐波这一带尤其要看一眼边缘几个采样点的数值。5. 边界效应与层数选择小波包检测里几个真会翻车的参数5.1 边界延拓方式决定首尾失真长度小波包滤波在信号首尾要补数据MATLAB 默认用对称延拓。db10 滤波器长度 20边界影响会往信号内部渗透十几个点。若把首尾各 5% 的采样点直接参与幅值统计读出来的谐波峰值会偏大。现场脚本里我一般先裁掉首尾各 N/16 的点再做幅值统计或者改用 ppd周期延拓——如果录波正好整周期截断周期延拓的效果比对称延拓好首尾不出现跳变。5.2 采样率、分解层数与频带分辨率的匹配层数不是越多越好。每加一层子带带宽减半但子带内点数也减半点数太少时频率分辨率反而下降。合理的层数要同时满足两个条件子带带宽小于相邻谐波间隔的一半子带内至少有十几个采样点。以 fs 10kHz、基波 50Hz 为例要区分 5 次和 7 次间隔 100Hz子带带宽需小于 50Hz按 fs/2^(lev1) 50 推算层数至少取 7。层数过高的话还得考虑滤波器组本身的过渡带交叠。采样率 /Hz目标最高谐波次数建议层数子带带宽 /Hz10249364256015480512025580102402568010240507405.3 用能量占比做检测结果的交叉校验独立跑一次能量占比统计是最省事的自检手段。如果模型里只有 3、5、7、9 次那能量应该集中在四个节点上其余节点占比之和应在噪声水平以内。若出现本不该有能量的节点占比超过 1%通常是层数选低了导致频带交叠或者边界延拓没处理好。反过来如果本该有能量的节点占比异常低先检查频序映射表是不是把节点号当频率用了。把这两条自检写进脚本开头比事后拿波形一条条比快得多。本文还有配套的精品资源点击获取
返回列表