自适应滤波

应用:

clip_image001html

clip_image002python

clip_image003算法

公式:

自适应滤波器中最重要的一个环节就是其系数的更新算法,若是不对自适应滤波器的系数更新的话,那么它就只是一个普通的FIR滤波器了。系数更新算法有不少种类,最基本、经常使用、简单的一种方法叫作NLMS(归一化最小均方),让咱们先来看看它的数学公式表达:.net

设置自适应滤波器系数h的全部初始值为0,h的长度为I。htm

clip_image005

对每一个取样值进行以下计算,其中n=0, 1, 2, ...blog

clip_image006

clip_image007

clip_image008

自适应滤波器系数 clip_image009 是一个长度为I的矢量,也就是一个长度为I的FIR滤波器。在时刻n,滤波器的每一个系数对应的输入信号为 clip_image010,它也是一个长度为I的矢量。这两个矢量的点乘即为滤波器的输出和目标信号d(n)之间的差为e(n),而后根据e(n)和 clip_image010[1] , 更新滤波器的系数。ip

数学公式老是使人难以理解的,下面咱们以图示为例进行说明ci

clip_image011

图中假设自适应滤波器h的长度为4,在时刻7滤波器的输出为:get

u[7] = h[0]*x[7] + h[1]*x[6] + h[2]*x[5] + h[3]*x[4]数学

滤波器的输入信号的平方和powerX为:

powerX = x[4]*x[4] + x[5]*x[5] + x[6]*x[6] + x[7]*x[7]

未知系统的输出d[7]和滤波器的输出u[7]之间的差为:

e[7] = d[7] - u[7]

使用u[7]和x[4]..x[7]对滤波器的系数更新:

h[4] = h[4] + u * e[7]*x[4]/powerX

h[4] = h[5] + u * e[7]*x[5]/powerX

h[4] = h[6] + u * e[7]*x[6]/powerX

h[4] = h[7] + u * e[7]*x[7]/powerX

其中参数u成为更新系数,为0到1之间的一个实数,此值越大系数更新的速度越快。对于每一个时刻i都须要进行上述的计算,所以滤波器的系数对于每一个参照信号x的取样都更新一次。

参考:摘抄自《用Python作科学计算》http://sebug.net/paper/books/scipydoc/fast_nlms_in_python.html

相关文章
相关标签/搜索