《Fir维纳滤波器的Matlab仿真》由会员分享,可在线阅读,更多相关《Fir维纳滤波器的Matlab仿真(22页珍藏版)》请在人人文库网上搜索。
1、基于最优FIR滤波器的线性预测,专业: 电路与系统 学号: 1001052 姓名: 马园园 指导老师: 杨鉴,主要内容,最优线性滤波器 1.概述 2.维纳滤波器 3.维纳-霍夫方程的求解 FIR维纳滤波器的Matlab仿真 1.问题描述 2.Matlab代码实现 仿真结果及其分析,最优线性滤波器,1、概述 最优线性滤波器和预测器,这里的最优指的是均方误差(mean square error,MSE)最小。最小均方误差引出了线性滤波器理论。 在许多实际应用中,人们无法直接得到所需的有用信号,能够得到的是退化了或失真了的有用信号。为了提取或回复有用的原始信号,这就需要设计一种滤波器,对得到。
2、的信号进行滤波,使它的输出尽可能逼近原始信号,成为最佳估计,这种滤波器就称为最优滤波器,最优线性滤波器,2、维纳滤波器 维纳(Wiener)是用来解决从噪声中提取信号的一种过滤(或滤波)方法。维纳滤波器是最小均方误差准则在信号滤波、预测中的具体应用。 维纳滤波器是一个线性时不变系统,通过该系统后,在最小均方误差准则下给出信号s(n)的尽可能逼近。 一个线性系统,如果它的单位样本响应为 ,当输入一个随机信号 , 其中 表示原始信号, 表示噪声,则输出为,最优线性滤波器,我们希望 通过线性系统 后得到的 尽量接近于 ,因此称 为 的估计值,用 表示,即 则维纳滤波器的输入输出关系可用下面图表示。 。
3、如果我们分别以 与 表示信号的真实值与估计值,而用 表示他们之间的误差,即 显然 可能是正值,也可能是负值,并且它是一个随机变量。因此,用它的均方误差来表达误差是合理的,所谓均方误差最小即它的平方的统计期望最小,即: 采用最小均方误差准则作为最佳过滤准则的原因还在于它的理论分析比较简单,不要求对概率的描述,最优线性滤波器,3.维纳-霍夫方程的求解 为了按 式所示的最小均方误差准则来确定维纳滤波器的冲激响应 ,令 对 的导数等于零,即可得 式中, 是 与 的互相关函数, 是 的自相关函数,分别定义为 上式称为维纳滤波器的标准方程或维纳-霍夫(Wiener-Hopf)方程。如果已知 和 ,那么解此。
4、方程即可求得维纳滤波器的冲激响应,最优线性滤波器,标准方程右端的求和范围,即i 的取值范围没有具体标明,实际上有三种情况: (1)有限冲激响应(FIR)维纳滤波器,i 从0 到N-1 取得有限个整数值; (2)非因果无限冲激响应(非因果IIR)维纳滤波器,i 从 到 取所有整数值; (3)因果无限冲激响应(因果IIR)维纳滤波器,i 从0 到 取正整数值。 上述三种情况下标准方程的解法不同,本文只描述FIR维纳滤波器的求解,最优线性滤波器,设滤波器冲激响应序列的长度为N ,冲激响应矢量为 滤波器输入数据矢量为 则滤波器的输出为 ,这样,标准维纳-霍夫程可写成 或 ,其中 是 与 的互相关函数,。
5、它是一个 N维列矢量;R 是 的自相关函数,是N 阶方阵 利用求逆矩阵的方法直接求解式, 得 这里opt 表示“最佳”,这就是FIR维纳滤波器的冲激响应,FIR维纳滤波器的Matlab仿真,1、问题描述 产生一个随机信号w(n),通过系统H(z)=1/(1-0.9/z)后,得到原始信号s(n)。对原始信号s(n)添加高斯白噪声noise。设计一个FIR维纳滤波器,从被干扰后的信号中尽可能恢复s(n,FIR维纳滤波器的Matlab仿真,2、代码仿真 %*基于最优FIR滤波器线性预测* clear; clc; N=128;%N为原始信号的长度 %N=input(请输入信号长度: ); M=8;%M。
6、代表滤波器的阶数 %M=input(输入滤波器阶数 :,FIR维纳滤波器的Matlab仿真,*产生一个原始信号* w=sqrt(0.20)*randn(N,1); A=1 -0.9; s=filter(1,A,w); %* noise=sqrt(1.5)*randn(N,1);%用randn函数产生正态分布伪随机数噪声 x=s+noise;%产生噪干扰后的原始信号 %*产生维纳滤波中加噪信号的自相关矩阵* rxx=xcorr(x); for i=1:M for j=1:M mrxx(i,j)=rxx(N-i+j); end end xd=s;%原始信号,FIR维纳滤波器的Matlab仿真,*产。
7、生维纳滤波中x方向上观测信号与期望信号的互相关矩阵* rxd=xcorr(x,xd); for i=1:M mrxd(i)=rxd(N-1+i); end hopt=inv(mrxx)*mrxd;%由维纳-霍夫方程得到滤波器最优解-FIR维纳滤波器的冲激响应 out_s=filter(hopt,1,x);%滤波后的输出信号(预测信号) %out_s=conv(x,hopt);%滤波后的输出信号(预测信号) %*求均方误差* fprintf(滤波后的信号相对原信号的统计均方误差:n); mse=mean(out_s-s).2) %滤波后的信号相对原信号的统计均方误差,FIR维纳滤波器的Matla。
8、b仿真, *画图* subplot(2,2,1) plot(xd); title(期望信号); %axis(0 N -3 3);%给出x,y轴最小最大值来选择坐标系的取值范围 xlabel(Time(n); ylabel(Amplitude); subplot(2,2,2) plot(noise); title(噪声信号); xlabel(Time(n); ylabel(Amplitude); %axis(0 N -5 5,FIR维纳滤波器的Matlab仿真,subplot(2,2,3) plot(out_s); title(维纳滤波后的信号); %axis(0 N -3 3);%用来给出x,。
9、y轴最小最大值来选择坐标系的取值范围 xlabel(Time(n); ylabel(Amplitude); subplot(2,2,4) plot(x); title(噪声干扰后的信号); xlabel(Time(n); ylabel(Amplitude); %axis(0 N -5 5,仿真结果及分析仿真结果(信号长度N=256,阶数M=3)-mse=0. 0.4045,仿真结果及分析仿真结果(信号长度N=256,阶数M=3)-mse=0. 0.4045,仿真结果及分析仿真结果(信号长度N=256,阶数M=8)-mse=0. 3215,仿真结果及分析仿真结果(信号长度N=256,阶数M=8)-mse=0. 3215,仿真结果及分析仿真结果(信号长度N=512,阶数M=8)-mse=0.3326,仿真结果及分析仿真结果(信号长度N=512,阶数M=8)-mse=0.3326,FIR维纳滤波器的Matlab仿真,仿真结果分析: 1.维纳滤波的阶数越大,滤波后的信号更接近原始信号,但随之计算量也增大。 2.保持滤波器阶数不变改变信号样本的长度(点数)可以发现滤波的效果虽着信号样本的长度的增加而提高。(这是因为信号样本越长信号的统计特征就越完整。,谢谢,Thanks。
如果觉得《如何用MATLAB编写FIR维纳滤波器 Fir维纳滤波器的Matlab仿真》对你有帮助,请点赞、收藏,并留下你的观点哦!