维纳滤波的详细讲解(同为小白,相互取暖)

1 简介

本文主要目的是回顾和巩固维纳滤波的基础和应用。

1.1 对象

    一维音频信号,带高斯随机噪声。

1.2 约定

    期望信号/纯净信号序列: x(n) 

    噪声信号序列: v(n)

    带噪信号序列: y(n)

    序列长度:        L

    维纳滤波器阶数:M

1.3 假设

    信号是平稳的:也就是说在过去的一段时间和现在的一段时间内,纯净信号和噪声的均值、方差等信息是不变的,这是利用过去信息估计现在信息的基础。

    期望信号与噪声是不相关的:期望信号就是理想中的纯净信号。

    信号都是零均值的:这有利于计算方差。

2 基础知识

2.1 自相关向量ryy的元素是如何计算的?

    ryy的元素ryy(i)是向量y的自相关函数的第i个值。ryy(i)=sum(y[i]*y[i])/L;当i=0时,ryy(0)就是y的方差。利用matlab库函数的实现方法:

    ryy_ =xcorr(y,M,'biased');  %这句话计算出来的互相关函数值是2L-1个,关于L对称,M是阶数,也即是相关向量的长度

    ryy =ryy_ (L+1:end);  % 这里从M+1开始,是因为matlab起始序列号是1,而不是0

2.2 自相关矩阵Ryy是怎么得到的?

    得到了自相关向量Ryy就可以构建出来了,利用toeplitz函数即可:

    Ryy=toeplitz(ryy);

2.3 互相关向量怎么得到?

    自相关都得到了,互相关就是在计算相关函数的时候,第二个变量换成其他变量。

    ryx =xcorr(y,x,M,'biased');

3 维纳滤波

核心思想是滤波后的信号与纯净信号的均方误差最小:

\mathit{J}=E[e^2(n)] =E[(\widehat{y}(n)-\mathbf{h}^T\mathbf{y}]=\mathbf{h}^T\mathbf{R}_y_y\mathbf{h}-2\mathbf{r}_y_x^T\mathbf{h}+\sigma_x ^2

\mathbf{h}_w=arg\underset{\mathbf{h}}{min}J(\mathbf{h})=\mathbf{R}_y_y^-^1\mathbf{r}_y_x

这就是维纳意义下均方误差最小的FIR滤波器。

x是未知的,因此上述滤波器是不可得到的。

而噪声的自相关向量我们可以预估。

利用假设,ryx=ryy-rvv。

所以,估计的时刻k的输出就用hw和y来计算得到:

\widehat{y}(k)=\mathbf{h}^T\mathbf{y}(k)

循环使用即可得到所有的输出估计信号。

这一步可以利用matlab的filter函数完成:

filter(h,1,y)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值