滤波器设计(3):维纳(Wiener)滤波器的设计

来源:互联网 发布:南大网络教学平台 编辑:程序博客网 时间:2024/05/16 17:53

引言


通信领域中,当然完全不止通信领域,一个很常见的需求就是,从含有噪声,或是已经畸变的信号中,
提取出或恢复出原始的、有用的信号。怎么做?可以用滤波器(Filter)。滤波器的变量(输入)是信号,
信号又是时间or空间or时间空间or…的函数。于是,函数的函数——泛函。至今,我没有学过,唉……
一定要抽时间学一下“泛函分析”……%>_<%
关于滤波器的设计,在大学本科开设的“电路原理”、“模拟电子技术基础”、“信号与系统”等课程中,或多或少
要涉及一点,但好像基本上都是一些经典滤波器。比如LPF、HPF,……,IIR、FIR……
前面的文章里,有一些对IIR、FIR滤波器的回顾。
Review:IIR滤波器的设计
Review:FIR滤波器的设计

对于滤波效果的评判标准有很多,这个问题没有标准答案。
客观而言,均方误差最小,均方离差(绝对误差)最小等。
主观而言,看起来效果变好了?听起来效果变好了?
其实,就连听起来效果变好了,这种话也是非常非常非常不严格的。
比如,有些人就喜欢重低音的鼓点,有些人就是喜欢清晰的人声。
所以,实际效果还真的就是因人而异了。

实际上(“实际上”,“事实上”的意思,就是提醒读者注意,后面即将要出现重要的内容了!),
在平均平方误差(mean square error)的意义下,经典滤波器常常不能达到“最优”。
所以,更进一步,用现代滤波器做信号处理。但是,通常,这是以“先要知道信号的一些统计特性”为代价的。

于是,维纳(Wiener)滤波器,闪亮登场。其实,在学维纳滤波器之前,应该先有一些随机过程的基本概念。

维纳滤波器简介


以下摘自百度百科。
维纳滤波器(Wiener filter)是由数学家维纳(Rorbert Wiener)提出的一种以最小平方为最优准则的线性滤波器。在一定的约束条件下,其输出与一给定函数(通常称为期望输出)的差的平方达到最小,通过数学运算最终可变为一个托布利兹方程的求解问题。维纳滤波器又被称为最小二乘滤波器或最小平方滤波器,目前是基本的滤波方法之一。维纳滤波是利用平稳随机过程的相关特性和频谱特性对混有噪声的信号进行滤波的方法,1942年美国科学家N.维纳为解决对空射击的控制问题所建立,是40年代在线性滤波理论方面所取得的最重要的成果。
更加详细的信息可参考百度百科的词条维纳滤波器。

另外,维纳滤波器应该是一个FIR滤波器。

自适应滤波器(adaptive filter)基本框图如下。
自适应滤波器后面会讲。跟自适应滤波器不同的地方就是,维纳滤波器好像是没有反馈的吧……
所以维纳滤波器的框图,就是把下图的反馈环路去掉,同时滤波器的系数不可变。自适应的是可以通过反馈回来的e进行系数调整。

x是滤波器的输入,y是滤波器的输出。输出与一个参考信号(期望信号)d作差,得到误差信号e。

注意事项

刚开始接触这一类滤波器的时候,我总是不知道这个参考信号d是什么情况。
有些书上会把d说出期望信号。我就在想,既然都能知道所期待的输出信号是什么了,为什么还要去滤波?
这不简直就是“脱了裤子放屁——多此一举”吗?
我相信有很多人跟我一样,初学的时候会觉得真的很奇怪。
有些书根本就回避了这个至关重要的问题。我只能说,也许作者是真的很懂,以至于不知道我们这些初学者什么不懂。好惨。
其实,这里面好像是有个“训练”,或者叫“预先测试”的过程。我把它叫A阶段,同时,把真正工作的阶段叫B阶段。
在预先测试的过程中,要做的工作是去求滤波器的系数w;而一旦预先测试过程结束,滤波器真正开始工作了,其系数就不改变了。
以我现在的认知水平,维纳滤波器的逻辑是这样的。

1. 在预先测试的过程中,期望信号d是可以知道的。x是可以获取的。因此,可以求出滤波器的系数w。
2. 在后来真正运行的过程中,就拿着这个w,去处理可以获取的x。x可能是含噪信号,可能是畸变信号,等等。
处理后,会输出y。这就是处理过后的信号,也许是滤除噪声的,也许是信道均衡后的,也许是恢复过后的,等等。

一个例子

假设现在在一个很吵的环境中,要用话筒录音,那不可避免会录入噪声。如何去除噪声?
除了用经典滤波器外呢,如果要求用维纳滤波器呢?
我个人的做法会是这样。
A. 预先测试过程
1. 找一段所谓的干净的语音,作为d。假设就是在安静的录音棚里录下来的。先准备着。
2. 播放干净的d,用话筒把它录音,录下来。因为有了噪声,所以变成了含噪信号x。我也拿到了。
3. 用x和d,去计算滤波器系数w。
B. 真正录音阶段
1. 演员登场,真正的录音开始了。这是能够录到含噪信号x。
2. 用A阶段得到的w,去处理这时录到的x。此时,应该说,输出的y,就是降噪以后的信号了。
当然,感觉上,A阶段所准备的干净语音,如果就是B阶段中,真正要说话的那个人的声音,按理说,效果可能会好一些。

基本原理


上面把例子都举过了,现在再来说原理。详细的原理和公式的推导可以找任何一本靠谱点的现代信号处理、自适应滤波之类的书来参考。
原理的话,就是希望在A阶段,找一组滤波器系数w,让滤波器的输出y和期望信号d之间的均方误差最小。
后来均方误差是关于w的一个二次型,所谓的二次曲面,有唯一的极小值,同时也是最小值。
然后就是一堆求偏导数,求最值。同时,令各个偏导导函数为0,求出驻点,也是极值点,也是最小值所在的自变量w所在的位置。
利用随机过程里的一些式子,再假定什么x宽平稳,再用相关函数的定义之类的一些东西,
从而得到一个Wiener-Hoff方程。(Ax = b类型的非齐次线性方程组,此x非上文的x。单纯是线性代数中的Ax=b那个x)
方程中的A,是收集到的,待处理信号x的自相关阵,也是一个Hermitian对称阵,还是一个托普利兹(Toeplitz)矩阵。如果x是实信号,那就是对称矩阵。半正定,等等性质。
方程中的x,是要求的维纳滤波器的系数w。
方程中的b,就是要求的期望信号d和待处理信号x之间的互相关阵。
最后,算这个方程就是了。
至于,w阶数取多少,这个嘛,我反正目前只知道,“试”。trail and error。

下面摘了一些资料过来。








扩展应用


维纳滤波器,不仅可以用来降噪,也可以用来预测,还可以用来均衡。应用很广泛的。
后面会有维纳滤波器的实例代码。今天就写这么多。
0 0
原创粉丝点击