基于DSP的回波抵消器设计与实现
?要求:
–掌握回波抵消原理 –掌握NLMS算法
– 完成信号源的MATLAB 仿真 – 用汇编编程实现
– 用CCS 图形功能观察各信号波形
– 讨论:步长因子、滤波器阶数N 对收敛速度的影响
基于LMS算法及其变体算法
在各种各样的自适应算法里,应用最广的自适应算法形式为“下降算法”。即:
?(k?1)=h?(k)+?(k?1)v(k?1) (3.2) hnn?(k?1)为第k+1次迭代的权向量,?(k?1)为第k+1次迭代的更新步长,式中hn而v(k?1)为第k+1次迭代的更新方向(向量);
“下降算法”有两种实现方法。一种是“自适应梯度算法”,另一种是“自适应高斯—牛顿算法”。自适应梯度算法包括LMS(Least Mean Square)算法及其各种变型和改进算法(统称LMS类自适应算法),自适应高斯-牛顿算法则包括RLS(Recursive Least Square)算法及其变型和改进算法。下面首先介绍的是LMS类算法。 1、 LMS算法
最常用的下降算法为“梯度下降法”,常称“最陡下降法”。在这类算法里,
?(k)][1]的负梯度,用更新方向向量v(k?1)取作第k次迭代的代价函数J[hn?(k)]”表示。 “??(n)???J[hn有名的LMS自适应算法正是以最陡下降法为原则的,它是一种很有用且很简单的估计梯度方法,其最核心的思想是用平方误差来代替均方误差。即使e(n)
?(k)。现在最常用的平方值的期望值最小,并且根据此判据来修改权系数hnWidrow-Hoff LMS自适应算法是采用“随机梯度法”来求解最佳权系数的。该算法用瞬时的“-2e(n)*x(n)”来代替对“-2E{e(n)*x(n)}”的估计运算。其权系数更新表达式为(3.3)式。
?(k?1)=h?(k)+2?e(k)x(k?n) (3.3) hnn其中e(k)意义同公式(3.1),定义为期望输出和滤波器实际输出之间的误
?是一个控制稳定性和收敛速度的待定常数参量,差。称之为环路增益参量(loop gain parameter)或步长因子(Step-size factor)。
过去三四十年中,人们一直致力于LMS算法的研究。其中最引人注目的是优化理论。迄今已有各种改进型算法被提出来,而这些改进型算法一般都可以归结为步长因子?的某种取法。事实上公式(3.2)中只有?是待定的。许多研究已证明,?值与学习曲线的时间常数成反比,与失调量成正比。即?的优化只能在收敛速度和失调量两个指标之间取折衷,折衷思想是以后各种改进算法,例如NLMS的主要依据。
单纯LMS算法的最大优点是算法简单,但其不足之处也是很明显的。对非平稳强相关的语音信号激励和冲激响应持续期很长的回波通道,LMS算法在时域直接实现时,辨识计算负担重,收敛速度慢。 2、 NLMS(Normalized_LMS)算法
由于输入信号的大小对LMS算法存在影响,即同样情况下,能量高的信号会引起梯度放大,而能量低的信号算法收敛速度较慢。将输入信号按照自身的平均能量进行归一化处理,就得到了归一化LMS算法,也称NLMS算法。
NLMS算法的原理是使预测信号的均方误差最小。即使
?(k)]}2最小。采用迭代算法的NLMS算法表示为公式(3.4)。 E[e2(k)]?E{[r(k)?r?(k?1)?h?(k)??e(k)x(k?n) (3.4) hnn2?xN?(k)1N?12?(k)??x(k?n)[2];N是噪声消除器和回波抵消器的长度,其中,?(常
Nk?02x取为256,512,或1024阶);?是可变的收敛步长因子。
NLMS算法仍保留了算法简单,运算量小,易于实现的优点并且从20世纪70年代后期,就成为商业化回波抵消器常采用的算法。但它的最大缺点仍是对冲击响应通道比较长的应用,收敛速度较慢;而且在强相关语音信号输入的情况下,误差信号的收敛性能会急剧恶化,为使其更适合网络回波抵消器的要求,必须对其进行进一步的改进。
基于LMS算法的NLMS算法
LMS方法应用的是瞬时数据,只有在统计平均意义下才与最陡梯度法等效,它的解所反映的过程是随机的
由上面介绍的内容可知:
????2?W[?(n)]?E{e(n)}?2E?e(n)e(n)?
?WN?WN??又因为:
e(n)=r(n)-r(n)_text
Tr(n)_test??wix(n?i)?WN(n)XN(n)i?0N?1
?e(n)??XN(n) ?WN代入上式后可得到
?W[?(n)]??2E{e(n)XN(n)}
这样可以得到
WN的另一种迭代方式
WN(n?1)?WN(n)????e(n)XN(n)} (2)
这里需要知道交相互项??e(n)XN(n)}由于它是未知的,所以我们只能使用它的估值,一种直观的估计式为:
1K?1E{e(n).XN(n)}??e(n?i)XN(n?i) (3)
Ki其中的K是我们使用的数据的长度,或称为使用的窗宽.将(3)式代入(2)式可以得到用估计算法的最陡梯度算法.而LMS算法则在这个基础上更进一步,直接使用瞬时值来代替估计值.即令:
E{e(n).XN(n)}?e(n)XN(n)
这样就可以得到LMS的算法迭代式:
WN(n?1)?WN(n)??e(n).XN(n)
这就是LMS算法的迭代式.它虽然是一个近似式,却能够在一定程度反映输入数据的统计特性随着时间的变化(非平稳性). 且波动瞬间时值随输入信号的不同而异.由于LMS算法采用瞬时值代替期望值,因而带来了解的随机波动,这种方法可以看作最陡梯度法的一种近似.
由于它迭代的计算量小,所需的存储器也小,因而在实践中被大量应用.
由于输入信号的大小对LMS算法存在影响,即同样情况下,能量高的信号会引起梯度放大,而能量低的信号算法收敛速度较慢.将输入信号按照自身的平均能量进行归一化处理,就得到了归一化LMS算法,也称NLMS算法. NLMS算法的原理是使预测信号的均方误差最小.即使
E[e2(k)]?E{[r(k)?r_est(k)]}2最小.采用迭代算法的NLMS算法表示为下式
h(k?1)?h(k)??e(k)x(k?n) 2Np(k)1其中p(k)?N2?x(k?n);N是回声抵消器的长度,
2n?0N?1是可变的收敛步长因子.
NLMS算法仍保留了算法简单,运算量小,易于实现的优点并且从20世纪80年代后期,就成为商业化回声抵消器常采用的算法.但它的最大缺点仍是对冲击响应通道比较长的应用,收敛速度较慢;而且在强相关语音信号输入的情况下,误差信号的收敛性能会急剧恶化,为使其更适合网络回声抵消器的要求,必须对其进行一步的改进.
1 回波抵消器基本原理
一般来说,在数字信号处理方法中,均采用了适当的自适应辨识方案来对消回波。它的基本原理是用一个自适应滤波器,通过自适应滤波器算法的调整,使其冲击响应与实际回波相逼近,从而得到回波预测信号,再将预测信号从接收到
的信号中减去,即可实现回波抵消。基本原理图如图5-1所示。
x(k)自适应滤波器电话混合线圈混合线圈电话e(k)^r(k) r(k)
其中:远端输入信号为x(n),回波抵消器产生的回波抵消预测信号为y(n),实际回波信号为d(n),预测误差信号为e(n).则用公式表达回波抵消的过程为:
?(k) (5.1) e(k)=d(k)-r图 5-1 回波抵消器原理图?(k)x(k?n) (5.2) ?(k)??h rn?0N?1由图5-1可知,噪声消除器和回波抵消器的核心是一个自适应滤波器。而自适应滤波器使用中要考虑的重要问题是优化调整滤波器的参数的准则,该准则不仅要对滤波器性能提供有意义的度量,而且必须导出可实现的算法。对自适应算法的要求是收敛速度快,计算复杂度低,稳定性好和失调误差小等。
2 自适应算法说明
回波抵消器中的自适应滤波器有一个典型的特点,就是要求有冲激响应持续期很长的回波通道(?64ms)。这也同时要求所采用的自适应算法具有比较快的收敛速度。理论上许多自适应算法都可以应用于回波抵消器中,但在实际设计时,考虑到现实的复杂度、硬件成本以及稳定性等问题,一般都倾向于选择结构简单、顽健性更强的算法。
LMS算法虽然有较高的计算速率,但是设计时必须小心地选择迭代步长,同时还可能遇到梯度噪声放大问题。由于它是采用粗糙的梯度估计得到的,它的残差(失调)与收敛速度间是相互制约的,这主要是因为LMS算法的步长在收敛过