简介
上一章讲述了最小熵反褶积(MED)的概念,本章提出最大相关峭度反卷积 (Maximum correlated Kurtosis deconvolution,MCKD)的概念。相比较MED方法,MCKD有以下优势:
有效提取周期性脉冲分量
克制信号的噪声影响
因此MCKD相比MED具备一定的优势,以下是MCKD的原理及算法部分,具体推导会在第二章详细描述。
原理
假设输入信号与系统呈现卷积的形式,即x ( n ) = h ( n ) ∗ y ( n ) + e ( n )
x(n)=h(n) *y(n)+e(n)
x ( n ) = h ( n ) ∗ y ( n ) + e ( n ) 先忽略噪声,目的是寻找最优滤波器f = [ f 1 f 2 ⋯ f L ] T f=\left[\begin{array}{llll}{f_{1}} & {f_{2}} & {\cdots} & {f_{L}}\end{array}\right]^{\mathrm{T}} f = [ f 1 f 2 ⋯ f L ] T 解出y ( n ) y(n) y ( n ) ,即y ( n ) = f ( n ) ∗ x ( n ) = ∑ k = 1 L f k x n − k + 1 y(n)=f(n) *x(n)=\sum_{k=1}^{L} f_{k} x_{n-k+1} y ( n ) = f ( n ) ∗ x ( n ) = ∑ k = 1 L f k x n − k + 1 引入相关峭度的概念 ,定义为C K M ( T ) = ∑ n = 1 N ( ∏ m = 0 M y ( n − m T ) ) 2 ( ∑ n = 1 N y n 2 ) 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}}
C K M ( T ) = ( ∑ n = 1 N y n 2 ) M + 1 ∑ n = 1 N ( ∏ m = 0 M y ( n − m T ) ) 2 其中M M M 为移位数,T T T 为冲击信号的周期。整个算法的目的是寻找最优滤波器参数使得相关峭度C K CK C K 最大,即max j C K M ( T ) = max j ∑ n = 1 N ( ∏ m = 0 M y ( n − m T ) ) 2 ( ∑ n = 1 N y n 2 ) 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}}
j max C K M ( T ) = j max ( ∑ n = 1 N y n 2 ) n + 1 ∑ n = 1 N ( ∏ m = 0 M y ( n − m T ) ) 2 其中f = [ f 1 f 2 ⋯ f L ] T f=\left[\begin{array}{llll}{f_{1}} & {f_{2}} & {\cdots} & {f_{L}}\end{array}\right]^{\mathrm{T}} f = [ f 1 f 2 ⋯ f L ] T 是上面提及的滤波器的系数,一般M的取值范围是1-7,如果大于7则会降低精度。
对目标函数求导d d f k C K M ( T ) = 0 k = 1 , 2 , ⋯ ⋯  , L
\frac{\mathrm{d}}{\mathrm{d} f_{k}} C K_{M}(T)=0 \quad k=1,2, \cdots \cdots, L
d f k d C K M ( T ) = 0 k = 1 , 2 , ⋯ ⋯ , L 最终经过推导求出矩阵的表达形式为f = ∥ y 2 ∥ 2 ∥ β ∥ 2 ( X 0 X 0 T ) − 1 ∑ m = 0 M ( X m T α 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)
f = 2 ∥ β ∥ 2 ∥ ∥ y 2 ∥ ∥ ( X 0 X 0 T ) − 1 m = 0 ∑ M ( X m T α m ) 其中x r = [ x 1 − r x 2 − r x 3 − r ⋯ x N − r 0 x 1 − r x 2 − r ⋯ x N − r 0 0 x 1 − r ⋯ x N − 2 − r ⋮ ⋮ ⋮ ⋱ ⋮ 0 0 0 ⋯ x N − L − r + 1 ] L × N r = 0 , T , 2 T , ⋯  , m T
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
x r = ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎡ x 1 − r 0 0 ⋮ 0 x 2 − r x 1 − r 0 ⋮ 0 x 3 − r x 2 − r x 1 − r ⋮ 0 ⋯ ⋯ ⋯ ⋱ ⋯ x N − r x N − r x N − 2 − r ⋮ x N − L − r + 1 ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎤ L × N r = 0 , T , 2 T , ⋯ , m T α = [ y 1 − m − 1 ( y 1 2 y 1 − T 2 ⋯ y 1 − m T 2 ) y 2 − m T − 1 ( y 1 2 y 2 − T 2 ⋯ y 2 − m T 2 ) ⋮ y N − m T − 1 ( y N 2 y N − T 2 ⋯ y N − M T 2 ) ] β = [ y 1 y 1 − T ⋯ y 1 − M T y 2 y 2 − T ⋯ y 2 − M T ⋮ y N y N − T ⋯ y N − M T ]
\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]
α = ⎣ ⎢ ⎢ ⎢ ⎡ y 1 − m − 1 ( y 1 2 y 1 − T 2 ⋯ y 1 − m T 2 ) y 2 − m T − 1 ( y 1 2 y 2 − T 2 ⋯ y 2 − m T 2 ) ⋮ y N − m T − 1 ( y N 2 y N − T 2 ⋯ y N − M T 2 ) ⎦ ⎥ ⎥ ⎥ ⎤ β = ⎣ ⎢ ⎢ ⎢ ⎡ y 1 y 1 − T ⋯ y 1 − M T y 2 y 2 − T ⋯ y 2 − M T ⋮ y N y N − T ⋯ y N − M T ⎦ ⎥ ⎥ ⎥ ⎤
以上是整个MCKD的原理部分,详细的推导会在下章推出。
算法
算法流程如下所示:
确定滤波器的长度L L L ,位移数M M M 和冲击信号周期T T T
计算原信号x ( n ) x(n) x ( n ) 的X 0 X 0 T X_{0} X_{0}^{\mathrm{T}} X 0 X 0 T 和X m T X_{m T} X m T
求出滤波器输出信号y ( n ) y(n) y ( n )
根据y ( n ) y(n) y ( n ) 计算α m \alpha_{m} α m 和β \beta β
更新滤波器系数f f f
如果滤波前后Δ C K M ( T ) < ε \Delta C K_{M}(T)<\varepsilon Δ C K M ( T ) < ε ,则停止迭代,跳回步骤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.