维纳滤波器

引言

在信号处理的·过程中,维纳滤波是一种常用的降噪方法,它能够把实际信号从带有噪声的观测量中提取出来,无论是在语音信号还是图像信号中,维纳滤波都有着十分重要的意义。

维纳滤波器

一段信号的组成,正常情况下来讲,是由纯噪声和纯信号组合而成。如此我们可设时域下的噪声信号为:x\hat{}=h(n)*y(n),其中h(n)为滤波器、y(n)为采集到的信号。

如此我们便可对式子左边和右边同时进行傅里叶变换转化到频域下进行滤波:X\hat{}=H(w)\cdot Y(w_{k})

那么,在这个过程中,误差e(w_{k})=X(w_{k})-X\hat{}(w_{k})=X(w_{k})-H(w_{k})\cdot Y(w_{k})

根据最小均误差准则,要使得滤波器效果达到最佳,即使均方误差最小,可得下式:

E[|e(w_{k})|^{2}]=E\begin{Bmatrix} [X(w_{k})-H(w_{k})Y(w_{k})] ^{*}[X(w_{k})-H(w_{k})Y(w_{k})] \end{Bmatrix}

展开式子并令  P_{yy}(w_{k})=E[|Y(w_{k})|^{2}]  、P_{yx}(w_{k})=E[Y(w_{k})X(w_{k})^{*}]

对原式进行求导得:\frac{\partial E}{\partial H(w_{k})}=[H(w_{k})P_{yy}(w_{k})-P_{yx}^{*}(w_{k})]^{*}=0

可得滤波器在频域下的表达形式为:H(w_{k})=\frac{P_{yx}^{*}}{P_{yy}(w_{k})}

至此,滤波器的推导过程已经完成一半

又由于

y(n)=x(n)+n(n),其中n(n)为噪声,且Y(w_{k})=X(w_{k})+N(w_{k})

可得P_{yx}^{*}=E[X(w_{k})\begin{Bmatrix} X(w_{k})+N(w_{k}) \end{Bmatrix}^{*}]=P_{xx}(w_{k})

P_{yy}=E[\begin{Bmatrix} X(w_{k})+N(w_{k}) \end{Bmatrix}\begin{Bmatrix} X(w_{k})+N^{*}(w_{k}) \end{Bmatrix}]=P_{xx}(w_{k})+P_{nn}(w_{k})

最终得出维纳滤波器为:H(w_{k})=\frac{P_{xx}(w_{k})}{P_{xx}(w_{k})+P_{nn}(w_{k})}

下面附上一段实例代码:

function [S_enhec, H] = wiener_filter(noisy, clean, noise)

alpha = 1;
beta = 1;

S_noisey = fft(noisy);
S_noise = fft(noise);
S_clean = fft(clean);

Pxx = mean(abs(S_clean))^2;
Pnn = mean(abs(S_noise))^2;

H = (Pxx/(Pxx+alpha*Pnn))^beta;

S_enhec = S_noisey*H;
S_enhec = ifft(S_enhec);

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值