版权声明:本文为博主原创文章,转载请附上博文链接!
1 写在前面
近年来,有源噪声控制 的应用越来越广泛。在这里,先不着重于描述有源噪声控制(ANC,active noise control),而是对自适应信号处理中的算法进行回顾。自适应算法自动调节单位脉冲响应,使之趋近于维纳解。
2 自适应算法
2.1 LMS算法
LMS算法是自适应算法中最基础的算法。因为其简单及实用性,在实际工作中具有广泛的应用。误差信号
e
(
n
)
e(n)
e(n)可以表示为
e
(
n
)
=
d
(
n
)
−
y
(
n
)
e(n)=d(n)-y(n)
e(n)=d(n)−y(n)式中
y
(
n
)
y(n)
y(n)为自适应滤波器的输出。即
y
(
n
)
=
w
(
n
)
T
x
(
n
)
y(n)=\bm{w}(n)^T\bm{x}(n)
y(n)=w(n)Tx(n)式中
x
(
n
)
\bm{x}(n)
x(n)为信号
x
(
n
)
x(n)
x(n)的采样延时矢量:
x
(
n
)
=
[
x
(
n
)
,
x
(
n
−
1
)
,
.
.
.
x
(
n
−
L
+
1
)
]
\bm{x}(n)=[x(n),x(n-1),...x(n-L+1)]
x(n)=[x(n),x(n−1),...x(n−L+1)]算法的目标函数可以表示为,
J
(
n
)
=
E
[
e
(
n
)
]
2
J(n)=E[e(n)]^2
J(n)=E[e(n)]2利用最速下降法可得,
w
(
n
+
1
)
=
w
(
n
)
+
▽
J
(
n
)
\bm{w}(n+1)=\bm{w}(n)+\bigtriangledown J(n)
w(n+1)=w(n)+▽J(n)
w
(
n
+
1
)
=
w
(
n
)
+
μ
x
(
n
)
T
e
(
n
)
\bm{w}(n+1)=\bm{w}(n)+\mu \bm{x}(n)^Te(n)
w(n+1)=w(n)+μx(n)Te(n)
LMS算法运算量低,但收敛速度慢。当自适应循环次数
n
n
n趋于无限大时,维纳滤波器的最速下降法的解接近于维纳解。
2.2 RLS算法1
RLS算法即递归最小二乘算法(RLS,recursive least squares)。首先介绍最小二乘的概念。
最小二乘法可以看成维纳滤波器理论的另一种表示方法。维纳滤波器是从集平均导出的,最小二乘法涉及使用时间的平均,因此该滤波器取决于计算中适用的样本数。RLS算法利用
n
−
1
n-1
n−1时滤波器权向量的最小二乘估计计算
n
n
n时的数据。
RLS代价函数为
J
(
n
)
=
∑
i
=
1
n
β
(
n
,
i
)
∣
e
(
i
)
∣
2
J(n)=\sum_{i=1}^{n}\beta(n,i)\left|e(i)\right|^2
J(n)=i=1∑nβ(n,i)∣e(i)∣2式中
e
(
i
)
e(i)
e(i)与上节中表示的含义一样,为期望信号与滤波器输出之差
e
(
i
)
=
d
(
i
)
−
y
(
i
)
e(i)=d(i)-y(i)
e(i)=d(i)−y(i)
通常所用的加权因子是指数加权因子,即遗忘因子
β
(
n
,
i
)
=
λ
n
−
i
i
=
1
,
2
,
.
.
.
,
n
\beta(n,i)=\lambda^{n-i}\qquad i=1,2,...,n
β(n,i)=λn−ii=1,2,...,n
即
J
(
n
)
=
∑
i
=
1
n
λ
n
−
i
∣
e
(
i
)
∣
2
J(n)=\sum_{i=1}^{n}\lambda^{n-i}\left|e(i)\right|^2
J(n)=i=1∑nλn−i∣e(i)∣2
为了解决病态问题,在代价函数中加入正则化项,则有
J
(
n
)
=
∑
i
=
1
n
λ
n
−
i
∣
e
(
i
)
∣
2
+
δ
λ
n
∥
w
(
n
)
∥
2
J(n)=\sum_{i=1}^{n}\lambda^{n-i}\left|e(i)\right|^2+\delta\lambda^n\left\|\bm{w}(n)\right\|^2
J(n)=i=1∑nλn−i∣e(i)∣2+δλn∥w(n)∥2
增益向量
k
(
n
)
=
λ
−
1
P
(
n
−
1
)
u
(
n
)
1
+
λ
−
1
u
(
n
)
T
P
(
n
−
1
)
u
(
n
)
\bm{k}(n)=\frac{\lambda^{-1}\bm{P}(n-1)\bm{u}(n)}{1+\lambda^{-1}\bm{u}(n)^T\bm{P}(n-1)\bm{u}(n)}
k(n)=1+λ−1u(n)TP(n−1)u(n)λ−1P(n−1)u(n)
先验估计误差为
e
(
n
)
=
d
(
n
)
−
u
(
n
)
T
w
^
(
n
−
1
)
\bm{e}(n)=\bm{d}(n)-\bm{u}(n)^T\widehat\bm{w}(n-1)
e(n)=d(n)−u(n)Tw
(n−1)
抽头权系数的迭代为
w
^
(
n
)
=
w
^
(
n
−
1
)
+
k
(
n
)
e
(
n
)
\widehat\bm{w}(n)=\widehat\bm{w}(n-1)+\bm{k}(n)e(n)
w
(n)=w
(n−1)+k(n)e(n)
Riccati方程
P
(
n
)
=
λ
−
1
P
(
n
−
1
)
−
λ
−
1
k
(
n
)
u
(
n
)
T
P
(
n
−
1
)
\bm{P}(n)=\lambda^{-1}\bm{P}(n-1)-\lambda^{-1}\bm{k}(n)\bm{u}(n)^{T}\bm{P}(n-1)
P(n)=λ−1P(n−1)−λ−1k(n)u(n)TP(n−1)
2.3 卡尔曼滤波
卡尔曼滤波(KF,Kalman filter)利用含有噪声的测量值来估计具有难以预测扰动的动态系统的当前状态,且其应用可以推广到弱线性问题。最优估计看作是滤波过程。上述RLS算法可以归为Kalman滤波的一种特殊形式。
设线性系统的动态模型为
x
(
k
)
=
F
x
(
k
−
1
)
+
w
\bm{x}(k)=\bm{Fx}(k-1)+w
x(k)=Fx(k−1)+w测量模型为
z
(
k
)
=
H
x
(
k
)
+
v
\bm{z}(k)=\bm{H}x(k)+v
z(k)=Hx(k)+v上面两式中
w
w
w和
v
v
v均为0均值的高斯白噪声。令
x
^
(
k
∣
k
−
1
)
\widehat\bm{x}(k|k-1)
x
(k∣k−1)和
x
^
(
k
∣
k
)
\widehat\bm{x}(k|k)
x
(k∣k)分别表示状态变量的先验估计和后验估计。
离散时间的卡尔曼滤波公式包括
x
^
(
k
+
1
∣
k
)
=
F
[
x
^
(
k
∣
k
−
1
)
+
K
(
k
)
α
(
k
)
]
\widehat\bm{x}(k+1|k)=\bm{F}[\widehat\bm{x}(k|k-1)+\bm{K}(k)\alpha(k)]
x
(k+1∣k)=F[x
(k∣k−1)+K(k)α(k)]式中
α
(
k
)
\alpha(k)
α(k)为新息。有
α
(
k
)
=
z
(
k
)
−
H
x
^
(
k
∣
k
−
1
)
\alpha(k)=z(k)-\bm{H}\widehat\bm{x}(k|k-1)
α(k)=z(k)−Hx
(k∣k−1)
K
(
k
)
K(k)
K(k)为卡尔曼增益矩阵
K
(
k
)
=
P
(
k
∣
k
−
1
)
H
T
[
H
P
(
k
∣
k
−
1
)
H
T
+
R
]
−
1
\bm{K}(k)=\bm{P}(k|k-1)\bm{H}^T[\bm{H}\bm{P}(k|k-1)\bm{H}^T+\bm{R}]^{-1}
K(k)=P(k∣k−1)HT[HP(k∣k−1)HT+R]−1式中
P
(
k
∣
k
−
1
)
\bm{P}(k|k-1)
P(k∣k−1)为协方差矩阵,即
P
(
k
∣
k
−
1
)
=
E
[
x
(
k
)
−
x
^
(
k
∣
k
−
1
)
]
[
x
(
k
)
−
x
^
(
k
∣
k
−
1
)
]
T
\bm{P}(k|k-1)=E[\bm{x}(k)-\widehat\bm{x}(k|k-1)][\bm{x}(k)-\widehat\bm{x}(k|k-1)]^T
P(k∣k−1)=E[x(k)−x
(k∣k−1)][x(k)−x
(k∣k−1)]T
协方差矩阵更新公式为
P
(
k
+
1
∣
k
)
=
F
[
(
I
−
K
(
k
)
H
(
k
)
)
P
(
k
∣
k
−
1
)
]
F
+
Q
\bm{P}(k+1|k)=\bm{F}[(I-\bm{K}(k)\bm{H}(k))\bm{P}(k|k-1)]\bm{F}+\bm{Q}
P(k+1∣k)=F[(I−K(k)H(k))P(k∣k−1)]F+Q
3 结语
上述自适应算法在ANC中均有广泛的应用,特别是LMS算法,由于其简单运算量小的特点,使得FxLMS算法成为ANC中最基础的算法。
如果您有兴趣,可以参考自适应数字滤波器,学习自适应信号处理的相关知识。
请参考《自适应滤波器原理》 ↩︎