您的位置:首页 > 其它

自适应滤波器遇到的一个问题

2016-07-22 15:42 204 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35630288/article/details/51995575

最近写自适应滤波器方面的程序的时候,遇到了一个问题,滤波器没有收敛到我想象之中的那个解,疑惑了一阵,后来发现一些问题,也许别人也会遇到,于是记录下来分享一下,少走弯路。

事情是这样,基于最基本的方法:LMS算法。确定一个输入信号,比如:u(n)=sin(ω0n)
我设置的期望信号是:desire(n)=cos(ω0n)
我们知道这两个信号之间只差一个相差,其他都是一样的,于是用这个期望的样本来训练FIR滤波器的话,一般人们的直接想法是会得到的滤波器的冲激响应为:h(n)=δ(n−n0)
其中n0是这两个信号的时延,结果非常自然以及直接,我们直接认为我们会得到这样的冲激响应真的不是很奇怪的事情。

可惜这样并不对,在这种情况下不对。

这事我得仿真结果:


上图是仿真的波形图,第一栏是输入的信号,第二栏的蓝色信号是期望信号,可以看出他们相差一定的时延,第三栏的红线是滤波输出。可以看出数次迭代之后,滤波器应该是被训练成了一个延时器。


上图就是这个所谓滤波器的冲激响应了,当时结果出来的时候,我有点错愕,因为这不是我想要的结果,而且实验显示,我也是成功了的,我应该会得到一个类似δ(n−n0) 的冲激响应才对。


上图是我调快频率之后的结果,这个冲激响应原来是个正弦的序列。再次有点错愕。后来我明白了,原来这是这个情况下比较特别的结果,虽然不是δ形式,但这个滤波器依然是可以正常工作的,这个正弦序列跟期望响应,跟输入信号是同频率的。联想一下迭代公式,就知道原因了,这个响应可以用笔算一下,的确是正确的解。

LMS算法的迭代公式:w→(n+1)=w→(n)+μe(n)u→

端倪算是出来了,我们这个解,不可能是正弦形式以外的解!!!!是不可能!!!!迭代来迭代去,u→一直是正弦,同频率的正弦加来加去,迭代几万次都是正弦的冲激响应。巧的是,这个解是对的。

于是我换了信号:


换成了随机信号,期望是延时了若干个单位,这样结果就是我想象的那样了!不过说实在的,也不可能有其他的解了。

当然FIR并不适宜处理所有情况,毕竟让他变频是不可能的,毕竟只是FIR。

联系我/ContactMe

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: