滤波之最大相关峭度反卷积MCKD(一)

坚强是说给别人听的谎言 提交于 2019-11-27 19:28:03

简介

上一章讲述了最小熵反褶积(MED)的概念,本章提出最大相关峭度反卷积(Maximum correlated Kurtosis deconvolution,MCKD)的概念。相比较MED方法,MCKD有以下优势:

  1. 有效提取周期性脉冲分量
  2. 克制信号的噪声影响

因此MCKD相比MED具备一定的优势,以下是MCKD的原理及算法部分,具体推导会在第二章详细描述。

原理

假设输入信号与系统呈现卷积的形式,即
x(n)=h(n)y(n)+e(n) x(n)=h(n) *y(n)+e(n) 先忽略噪声,目的是寻找最优滤波器f=[f1f2fL]Tf=\left[\begin{array}{llll}{f_{1}} & {f_{2}} & {\cdots} & {f_{L}}\end{array}\right]^{\mathrm{T}}解出y(n)y(n),即y(n)=f(n)x(n)=k=1Lfkxnk+1y(n)=f(n) *x(n)=\sum_{k=1}^{L} f_{k} x_{n-k+1}
引入相关峭度的概念,定义为
CKM(T)=n=1N(m=0My(nmT))2(n=1Nyn2)M+1 C K_{M}(T)=\frac{\sum_{n=1}^{N}\left(\prod_{m=0}^{M} y(n-m T)\right)^{2}}{\left(\sum_{n=1}^{N} y_{n}^{2}\right)^{M+1}} 其中MM为移位数,TT为冲击信号的周期。整个算法的目的是寻找最优滤波器参数使得相关峭度CKCK最大,即
maxjCKM(T)=maxjn=1N(m=0My(nmT))2(n=1Nyn2)n+1 \max _{j} C K_{M}(T)=\max _{j} \frac{\sum_{n=1}^{N}\left(\prod_{m=0}^{M} y(n-m T)\right)^{2}}{\left(\sum_{n=1}^{N} y_{n}^{2}\right)^{n+1}} 其中f=[f1f2fL]Tf=\left[\begin{array}{llll}{f_{1}} & {f_{2}} & {\cdots} & {f_{L}}\end{array}\right]^{\mathrm{T}}是上面提及的滤波器的系数,一般M的取值范围是1-7,如果大于7则会降低精度。
对目标函数求导
ddfkCKM(T)=0k=1,2, ,L \frac{\mathrm{d}}{\mathrm{d} f_{k}} C K_{M}(T)=0 \quad k=1,2, \cdots \cdots, L 最终经过推导求出矩阵的表达形式为
f=y22β2(X0X0T)1m=0M(XmTαm) f=\frac{\left\|y^{2}\right\|}{2\|\boldsymbol{\beta}\|^{2}}\left(\boldsymbol{X}_{0} \boldsymbol{X}_{0}^{\mathrm{T}}\right)^{-1} \sum_{m=0}^{M}\left(\boldsymbol{X}_{m T} \boldsymbol{\alpha}_{m}\right) 其中
xr=[x1rx2rx3rxNr0x1rx2rxNr00x1rxN2r000xNLr+1]L×Nr=0,T,2T, ,mT x_{r}=\left[\begin{array}{ccccc}{x_{1-r}} & {x_{2-r}} & {x_{3-r}} & {\cdots} & {x_{N-r}} \\ {0} & {x_{1-r}} & {x_{2-r}} & {\cdots} & {x_{N-r}} \\ {0} & {0} & {x_{1-r}} & {\cdots} & {x_{N-2-r}} \\ {\vdots} & {\vdots} & {\vdots} & {\ddots} & {\vdots} \\ {0} & {0} & {0} & {\cdots} & {x_{N-L-r+1}}\end{array}\right]_{L \times N} \qquad r=0, \quad T, \quad 2 T, \quad \cdots, \quad m T
α=[y1m1(y12y1T2y1mT2)y2mT1(y12y2T2y2mT2)yNmT1(yN2yNT2yNMT2)]β=[y1y1Ty1MTy2y2Ty2MTyNyNTyNMT] \alpha=\left[\begin{array}{c}{y_{1-m}^{-1}\left(y_{1}^{2} y_{1-T}^{2} \cdots y_{1-m T}^{2}\right)} \\ {y_{2-m T}^{-1}\left(y_{1}^{2} y_{2-T}^{2} \cdots y_{2-m T}^{2}\right)} \\ {\vdots} \\ {y_{N-m T}^{-1}\left(y_{N}^{2} y_{N-T}^{2} \cdots y_{N-M T}^{2}\right)}\end{array}\right] \beta=\left[\begin{array}{c}{y_{1} y_{1-T} \cdots y_{1-M T}} \\ {y_{2} y_{2-T} \cdots y_{2-M T}} \\ {\vdots} \\ {y_{N} y_{N-T} \cdots y_{N-M T}}\end{array}\right]
以上是整个MCKD的原理部分,详细的推导会在下章推出。

算法

算法流程如下所示:

  1. 确定滤波器的长度LL,位移数MM和冲击信号周期TT
  2. 计算原信号x(n)x(n)X0X0TX_{0} X_{0}^{\mathrm{T}}XmTX_{m T}
  3. 求出滤波器输出信号y(n)y(n)
  4. 根据y(n)y(n)计算αm\alpha_{m}β\beta
  5. 更新滤波器系数ff

如果滤波前后ΔCKM(T)<ε\Delta C K_{M}(T)<\varepsilon,则停止迭代,跳回步骤3.

仿真过程

使用的工具包是Matlab论坛的Minimum Entropy Deconvolution Multipack,函数为MCKD,输入信号是高斯噪声上叠加周期脉冲成分,使用MCKD方法可以有效检测出脉冲波。使用Matlab代码如下

clc;clear;close all
n = 0:999;
x = 3*(mod(n,100)==0) + randn(size(n));
[y_final f_final ck_iter] = mckd(x,400,30,100,5,1);

结果为
在这里插入图片描述
可见MCKD能将每隔100个点生成的脉冲信号有效提取出,对于故障检测而言是一个重要的故障检测手段。

总结

通过上述仿真过程可以看出对于周期性的脉冲信号检测可以使用MCKD方法,下一章将对MCKD的过程进行推导,之后会推出MOMEDA算法和这三种算法的对比总结。

参考文献

[1] MCDONALD G L, ZHAO QING, ZHOU M J. Maximun correlated kurtosis deconvolution and application on gear tooth chip fault detection[J]. Mechanical Systems and Signal Processing, 2012(33): 237-255.
[2] 杨斌, 张家玮, 樊改荣, et al. MCKD和RSSD在滚动轴承早期故障诊断中的应用[J]. 噪声与振动控制, 2018(2):154-161.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!