郑鸿瑞,赵亚文,周风波,甘昭林,胡祎,谭燕花
(邵阳学院,湖南邵阳,422000)
信号自适应滤波算法主要是为了处理一些由于噪声干扰太强导致信噪比较小的信号,因为在实际的测试中,噪声的干扰无处不在,这些噪声或大或小都影响到了实际测量的结果的精确性。减小这部分噪声对测试的影响,一方面可以将噪声消除,另一方面可以将所需的信号增强。如何将信号中的噪声减少一直都是信号处理中的一个重点研究话题,传统意义上的傅里叶变换去噪方法只适用于平稳信号,但是对非平稳信号的处理就显得很无力。
目前国内已知的信号增强算法常用的有小波信号增强算法、Savitzky-Golay去噪增强算法和LΜS算法。通过对LΜS算法展开研究,发现这种算法其本身计算复杂程度低,收敛性和稳定性好,在国内也得到了广泛的应用,但是在对其优越性的研究的过程中也发现其本身存在一些缺陷,比如基本的LΜS算法收敛速度较慢,所需要的去噪时间长。如何找到办法去降低去噪的时间,提高去噪效率,使得输出信号在更较短的时间内收敛趋于平稳。为解决这个问题,小组对LΜS算法展开了一种方法的研究。
本方法具体实现是通过引出误差因子这一概念,构造误差因子与误差函数非线性关系的相关修正函数,并将误差因子的范围规范在一个较小的区间内,通过以误差函数作为自变量的函数关系式的变化去对步长因子进行进一步的修正,且对于每一个误差函数值,误差因子的修正都有不同的适应性变化,最后由适应性变化后的步长因子再更进一步对每一个加权系数进行适应性的修正,最后起到了对带噪声信号的优化和对收敛速度的提高的效果。
LΜS算法又被称为最小均方(Least mean square)算法,是一种检索算法,它是通过对目标函数进行适当修改[1-2]。在1960年由B.Widrow[3-5]和Hoff提出来的,这种算法也被称为Δ规则。具体实现是通过对目标函数进行修改以便简化梯度向量的计算算法。LΜS也是建立在维纳滤波的算法基础之上,借助最陡下降法得到了又进一步的发展。
LΜS算法的具体原理如图1所示。
图1 LMS算法原理图
输入信号矩阵:
加权系数构成一个权系数矢量:
输出信号:
误差信号:
LΜS算法利用最小均方误差函数作为优化之后的目标函数,以此方法来寻找到最优的加权系数W。LΜS算法最小均方值的准则[6]:
利用最陡下降算法,使信号沿着性能曲面下降最快速的方向(即负梯度方向)调整加权向量,并寻找到性能曲面的最小点。计算权向量的迭代公式为:
其中s(n)为期望值。LΜS算法所需要的加权系数是通过对前一时刻特性的估算来确定下一个时刻的值,通过不断的估算,使误差值逐渐减少,不断趋近于0,一步一步得到最接近理想信号的波形。这种算法是通过迭代法求解实现的,所以会造成信号去噪的时间比较长,而且算法要求步长因子α的范围处于0到最大特征值的倒数1/λmax之间[7]。因为步长因子α对算法的收敛性起着决定性的作用,若步长因子α的值太小,可能会导致噪声过大,影响收敛速度;如果α太大,可能会导致参数更新的幅度大,使信号产生失真,同时也会使得信号收敛于局部最优点,或者处于震荡状态,甚至会导致信号失真。因此,选择合适的α参数值是LΜS算法的关键所在。
由于无法提前了解到外界环境中的各种随机干扰信号和那些随时间而规律性变化的噪声,我们无法对步长因子进行强制性规定,故本章提出了一种改进型LΜS算法,该算法是在LΜS算法的基础上对步长因子和与步长因子有关的函数参量进行误差分析和适应性变化去改进实现更为优化的输出信号,发现改进算法降低了信号在初始收敛时刻较大的噪声的现象,使信号收敛速度提高,稳定性增强。
1.2.1 改进LMS算法的变步长数学模型
该模型中0<μ<1/λmax的实现是通过将误差因子μ规定在一个可调节的范围内,即λmax是输入信号自相关矩阵的最大特征值。
函数通过取μ为一个中间值开始并在一定范围内进行变化和修正,降低了初始μ值过大或者过小引起的初始情况中噪声较大的现象。因每一次迭代都会产生一个与期望值存在误差的误差值,所以这里提出了修正函数和误差因子的概念,由μ与error(n)存在的非线性关系,利用误差因子的大小ee去修正μ值的大小,使μ可以通过每一个输入得到的误差值的不同而适应性改变,得到适应性μ值。具体数学式如下:
在本模型中取0.00001<μ<0.20 ,设定参数a=0.99,r=0.0008。因为每一次迭代时对μ值进行修正时都是利用与误差值的函数关系来进行修正的,但是在修改误差因子时,仍在初始时刻有较小的噪声干扰,导致收敛性能不高。因此需要改变误差因子ee的函数模型进而去改变信号初始收敛时刻的收敛性能。
1.2.2 改进误差因子ee
论文参考了Sigmoid函数,对误差函数的方值进行修改,其定义式为:
然后将上述误差因子代入之后再进行变换得到改进后的误差函数,具体算法改进函数为:
根据图2改进算法原理图,通过exp指数函数和误差函数的非线性关系,结合函数的单调性,再通过error(n)修改每一次ee值从而对μ值进行修正达到预期的结果。
图2 LMS改进算法原理图
为了验证改进变步长LΜS算法的滤波去噪的效果,采用了ΜATLAB软件进行实验仿真,将不同条件下的去除噪声效果进行比较并得出相关结论。
图3里面第一幅图展示的是研究所构造的初始正弦信号模型,第二幅图中是构造的随机高斯白噪声信号波形,第三幅图展示的是将高斯白噪声加到信号后的带噪声信号波形,并将其信噪比设置为10。
图3 原始信号输入信号
图4中的第一幅图仿真所得到的是常规LΜS算法滤波去噪过程中噪声函数收敛过程,第二幅图是变步长LΜS算法所得到的噪声函数收敛过程图,第三幅是改进之后的变步长LΜS算法得到噪声函数收敛过程,将三个结果进行了比较可以知道:变步长LΜS算法所得到的结果虽然加快了去噪滤波效果和收敛速度,但在初始时刻仍存在有一定的噪声干扰,而改进之后的LΜS算法的初始时间段的收敛速度明显优化了很多,滤波去噪效果也提高了,信号波形也相对更为平稳。
图4 算法的收敛过程
图5(a)表示信噪比为10时不同LΜS算法中噪声信号的收敛过程,图5(b)表示信噪比为5时的LΜS算法的收敛过程,由图可以看出信噪比减少之后,即噪声占比增大后,变步长的LΜS算法的收敛速度明显更优于其他两种方法且稳定性并没有下降的趋势,这也验证了变步长LΜS算法的收敛速度会随着噪声的增大而下降,而改进之后的变步长LΜS算法去噪性能并没有因此而减小,收敛速度也没有下降,信号波形也依旧平稳。这也是改进算法的其中一个优势。
图5 在不同信噪比下三种算法的比较
图6中将变步长中采用的误差因子与改进后的误差因子进行了对比,从图4中可以很明显的看出,变步长中所采用的误差函数的幅度区间比较大,所以得到的结果跳变性也比较大,通过不断迭代之后所得到的输出函数需要的时间也较为长。改进之后的误差函数跳变性明显要小很多,大大减少了收敛所需要的时间,这也是改进算法在数学理论上的优化之处。
图6 误差函数
图7 三种算法性能比较
表1 三种方法的均方误差性能比较
通过采集三种算法下的数据并分别计算其均方值,再进行对比之后,可以发现,相同信噪比条件下,常规的LΜS算法的误差均方值是相对较大的,而变步长算法的均方值相对之前显著减少很多,改进LΜS算法的均方误差值最小。当信噪比减小之后,变步长算法的均方误差值变化较大,说明其收敛速度受噪声影响大,相比之下,改进LΜS算法的误差均方值变化较小,验证了改进后的LΜS算法的噪声屏蔽性能和收敛性能更佳。
通过比较三种LΜS算法的误差性能和滤波去噪后的信号波形,可以得出:定步长算法的初始噪声干扰比较大,但是伴随着时间与迭代次数的增加,噪声干扰会逐渐减少,信号会慢慢趋于平稳,但是收敛的速度非常慢,需要迭代次数多;变步长因子算法改进了收敛慢的缺点,使得算法收敛性提高,但是仍存在一些缺陷,观察可知道初始噪声虽然比较小,但依旧存在,其初始收敛速度也有待提高,除此之外,收敛速度会随着噪声的增大而减小;改进步长因子算法消除了初始时刻存在较小噪声的问题,且收敛速度不会随噪声的增加而改变,整体的收敛稳定性也相对得到了很大的提高。仿真结果表明,提出的改进LΜS算法去噪性能较前面两种算法有更快的收敛速度、更小的稳态误差与更强的抗干扰能力。