1 简介
维纳滤波是诺伯特*维纳在二十世纪四十年代提出的一种滤波器,是根据全部过去的和当前的观察数据 来估计信号的当前值,它的解是以均方误差最小条件下所得到的系统的传递函数 H(z)或单位样本响应 h(n)的形式 给出的,因此维纳滤波器也称为最佳线性滤波器.本论文介绍了维纳滤波器的原理并运用 Matlab 软件进行仿真分 析.论文仿真分为两大块,第一:不同信号加入白噪声之后输入维纳滤波器,探讨噪声为白噪声时维纳滤波器对 不同种类信号的滤波降噪效果.第二:选取非周期音频信号加入白噪声之后输入维纳,经典 fir 及自适应滤波器, 对比维纳滤波器与其他滤波器降噪效果.从这两个方面实验展现了维纳滤波器自身特性,得出维纳滤波器具有较 好的性能.
2 部分代码
clc clear all close all [x,fs]=wavread('1_NumSound_snr10.wav'); ls=length(x); xk=x(1:ls); sound(xk,fs); figure(1); plot(x); title('原始信号'); pause %sound(xs,fs); output=WienerScalart96(xk,fs,0.35); sound(output,fs); figure(3); plot(output); title('去噪信号'); disp('snr=') snr=SNR_singlech( output,xk(1:length( output))) Fs = 128; % 采样频率 L=length(xk);%信号长度 N = 2.^nextpow2(L); %采样点数,采样点数越大,分辨的频率越精确,N>=L,超出的部分信号补为0 Y = fft(x,N)/N*2; %除以N乘以2才是真实幅值,N越大,幅值精度越高 f = Fs/N*(0:1:N-1); %频率 A = abs(Y); %幅值 P = angle(Y); %相值 figure; subplot(211);plot(f(1:N/2),A(1:N/2)); %函数fft返回值的数据结构具有对称性,因此我们只取前一半 title('幅值频谱') xlabel('频率(Hz)') ylabel('幅值') subplot(212);plot(f(1:N/2),P(1:N/2)); title('相位谱频') xlabel('频率(Hz)') ylabel('相位')
3 仿真结果
4 参考文献
[1]通信工程专业叶祥健, 指导教师张宁教授. 维纳滤波器在信号降噪中的应用.