本篇主要介绍Adapter Filter中常见的一种算法LMS(Least Mean Square), 常用于噪声消除, 通信上的信道均衡等。
LMS算法简介
如下图所示是一个N-tap的自适应滤波器:
输入信号是x(n), 参考输出是d(n), 滤波器的输出是y(n).
滤波器的输出误差就是:
滤波器的tap系数是随时间变化的, 即 adaptive。 LMS算法依据的准则就是使得参考输出和滤波器实际输出之间的均方差最小。那么代价函数可以写成
也就是:
利用steepest-descent算法,沿着性能曲面最速下降方向(负梯度方向)调整滤波器强权向量,搜索性能曲面的最小点,计算权向量的迭代公式为 :
$\mu$是步长因子, 传统的LMS算法实际上是steepest-descent算法的一种简化实现:代价函数变成:$\varepsilon = e^2(n)$
那么tap系数向量的迭代公式变成:
其中$\nabla$代表的是梯度函数,并且是以列向量的方式表示:
那么注意第i项:
上式中,没有d(n)项, 是因为d(n)和tap系数不想关, 把第一个公式带入上面的公式有:
LMS 算法总结
根据上面所述,LMS算法可以总结如下:
LMS 算法实例
- 首先创建一个lms算法的函数:
1 | function [yn,W,en]=lms_func(xn,dn,M,mu,itr) |
- 下面是一个实例
1 | close all; clear |
- 运行结果如下:
- filter 输入和输出
- 输入输出对比和误差