论文阅读系列文章
第一篇:基于kronecker分解的NLMS算法前言
论文阅读系列文章主要是分享一些自己平常在IEEE上看到的一些有趣的论文,基于kronecker 分解的NLMS算法是今年ICASSP2020的文章,由于自己目前也是在做关于自适应滤波相关的研究,因此分享下该篇论文一、介绍
NLMS算法属于自适应滤波的一种,一般可以用于回声消除,主动噪声控制,房间脉冲响应估计等实际应用中。NLMS算法的本质实际上就是用来估计系统函数;得到系统函数后,将系统函数和输入的参考信号卷积,在理论上是可以获得想要的输出信号;
二、原理说明
1.数学模型
假设输出信号为
y
(
n
)
y(n)
y(n),房间脉冲响应或是系统函数为
ω
\bm{\omega}
ω, 参考信号为
x
(
n
)
\bm x(n)
x(n), 噪声或是其他信号为
v
(
n
)
v(n)
v(n),那么信号模型可以表示为:
y
(
n
)
=
ω
T
x
(
n
)
+
v
(
n
)
y(n) = \bm{\omega}^T\bm{x}(n)+v(n)
y(n)=ωTx(n)+v(n)
其中:
ω
=
[
ω
0
,
ω
1
,
.
.
.
,
ω
L
−
1
]
T
\bm{\omega}=[\omega_0, \omega_1, ...,\omega_{L-1}]^T
ω=[ω0,ω1,...,ωL−1]T
x
=
[
x
(
n
)
,
x
(
n
−
1
)
,
.
.
.
,
x
(
n
−
L
+
1
)
]
T
\bm{x}=[x(n),x(n-1),...,x(n-L+1)]^T
x=[x(n),x(n−1),...,x(n−L+1)]T
在回声消除领域中,
ω
T
x
(
n
)
\bm{\omega}^T\bm{x}(n)
ωTx(n)称为回声信号,
v
(
n
)
v(n)
v(n)称为近端信号或是噪声信号;
那么误差信号可以表示为:
e
(
n
)
=
y
(
n
)
−
y
^
(
n
)
=
y
(
n
)
−
ω
^
(
n
)
x
(
n
)
e(n)=y(n)-\hat{y}(n) = y(n) - \hat{\bm{\omega}}(n)\bm{x}(n)
e(n)=y(n)−y^(n)=y(n)−ω^(n)x(n)
其中
y
^
(
n
)
\hat{y}(n)
y^(n)表示为估计的回声信号;
对
ω
(
n
)
\omega(n)
ω(n)进行kronecker分解,可以得到:
ω
^
(
n
)
=
∑
d
=
1
D
ω
^
2
,
d
(
n
)
⊗
ω
^
1
,
d
(
n
)
\hat{\bm{\omega}}(n)=\sum_{d=1}^D{\hat{\bm{\omega}}_{2,d}(n) \otimes \hat{\bm{\omega}}_{1,d}(n) }
ω^(n)=d=1∑Dω^2,d(n)⊗ω^1,d(n)
其中:
ω
^
2
,
d
(
n
)
⊗
ω
^
1
,
d
(
n
)
=
(
ω
^
2
,
d
(
n
)
⊗
I
L
1
)
ω
^
1
,
d
(
n
)
=
(
I
L
2
⊗
ω
^
1
,
d
(
n
)
)
ω
^
2
,
d
(
n
)
{\hat{\bm{\omega}}_{2,d}(n) \otimes \hat{\bm{\omega}}_{1,d}(n) }=(\hat{\bm{\omega}}_{2,d}(n) \otimes \bm{I}_{L_1})\hat\bm\omega_{1,d}(n)=(\bm{I}_{L_2} \otimes \hat\bm\omega_{1,d}(n) )\hat\bm\omega_{2,d}(n)
ω^2,d(n)⊗ω^1,d(n)=(ω^2,d(n)⊗IL1)ω^1,d(n)=(IL2⊗ω^1,d(n))ω^2,d(n)
分解之后,每个子系统的误差信号可以表示为:
e 1 ( n ) = y ( n ) − ω ^ 1 T ( n ) x 2 ( n ) e_1(n)=y(n)-\hat{\bm{\omega}}_1^T(n)\bm{x}_2(n) e1(n)=y(n)−ω^1T(n)x2(n)
e 2 ( n ) = y ( n ) − ω ^ 2 T ( n ) x 1 ( n ) e_2(n)=y(n)-\hat{\bm{\omega}}_2^T(n)\bm{x}_1(n) e2(n)=y(n)−ω^2T(n)x1(n)
x
^
2
,
d
(
n
)
=
W
^
2
,
d
(
n
)
x
(
n
)
\hat{\bm{x}}_{2,d}(n)=\hat{\bm{W}}_{2,d}(n)\bm{x}(n)
x^2,d(n)=W^2,d(n)x(n)
其中
W
^
2
,
d
(
n
)
\hat{\bm{W}}_{2,d}(n)
W^2,d(n)的维数为:
L
1
L
2
×
L
1
L_1L_2\times L_1
L1L2×L1
x 2 ( n ) = [ x ^ 2 , 1 ( n ) , x ^ 2 , 2 ( n ) , . . . , x ^ 2 , D ( n ) ] T \bm{x}_2(n)= [\hat{\bm{x}}_{2,1}(n), \hat{\bm{x}}_{2,2}(n), ..., \hat{\bm{x}}_{2,D}(n)]^T x2(n)=[x^2,1(n),x^2,2(n),...,x^2,D(n)]T
ω ^ 2 ( n ) = [ ω ^ 2 , 1 T ( n ) , ω ^ 2 , 2 T ( n ) , . . . , ω ^ 2 , D T ( n ) ] T \hat{\bm{\omega}}_2(n)=[\hat{\bm{\omega}}_{2,1}^T(n),\hat{\bm{\omega}}_{2,2}^T(n),...,\hat{\bm{\omega}}_{2,D}^T(n)]^T ω^2(n)=[ω^2,1T(n),ω^2,2T(n),...,ω^2,DT(n)]T
x
^
1
,
d
(
n
)
=
W
^
1
,
d
(
n
)
x
(
n
)
\hat{\bm{x}}_{1,d}(n)=\hat{\bm{W}}_{1,d}(n)\bm{x}(n)
x^1,d(n)=W^1,d(n)x(n)
其中
W
^
1
,
d
(
n
)
\hat{\bm{W}}_{1,d}(n)
W^1,d(n)的维数为:
L
1
L
2
×
L
2
L_1L_2\times L_2
L1L2×L2;
x
1
(
n
)
=
[
x
^
1
,
1
(
n
)
,
x
^
1
,
2
(
n
)
,
.
.
.
,
x
^
1
,
D
(
n
)
]
T
\bm{x}_1(n)= [\hat{\bm{x}}_{1,1}(n), \hat{\bm{x}}_{1,2}(n), ..., \hat{\bm{x}}_{1,D}(n)]^T
x1(n)=[x^1,1(n),x^1,2(n),...,x^1,D(n)]T
ω ^ 1 ( n ) = [ ω ^ 1 , 1 T ( n ) , ω ^ 1 , 2 T ( n ) , . . . , ω ^ 1 , D T ( n ) ] T \hat{\bm{\omega}}_1(n)=[\hat{\bm{\omega}}_{1,1}^T(n),\hat{\bm{\omega}}_{1,2}^T(n),...,\hat{\bm{\omega}}_{1,D}^T(n)]^T ω^1(n)=[ω^1,1T(n),ω^1,2T(n),...,ω^1,DT(n)]T
最终的更新公式可以表示为:
ω ^ 1 ( n + 1 ) = ω ^ 1 ( n ) + μ e 1 ( n ) x 2 ( n ) \hat{\bm{\omega}}_1(n+1) = \hat{\bm{\omega}}_1(n) + \mu e_1(n)\bm{x}_2(n) ω^1(n+1)=ω^1(n)+μe1(n)x2(n)
ω ^ 2 ( n + 1 ) = ω ^ 2 ( n ) + μ e 2 ( n ) x 2 ( n ) \hat{\bm{\omega}}_2(n+1) = \hat{\bm{\omega}}_2(n) + \mu e_2(n)\bm{x}_2(n) ω^2(n+1)=ω^2(n)+μe2(n)x2(n)
2.实验实例
仿真效果如下:
待添加
总结
以上就是今天要讲的内容,目前只更新了基本原理,下次再添加该论文相关的实验结果;