《MATLAB-巴特沃兹滤波器.docx》由会员分享,可在线阅读,更多相关《MATLAB-巴特沃兹滤波器.docx(8页珍藏版)》请在优知文库上搜索。
1、相位是信号的一个事要参数,所以一般在滤波中希望实现零相位偏移或具有线性相位偏移.现在大致有两类方法实现零相位偏移:1、将滋波器与一个全通漉波器级联,用后者的相位响应矫正前者。须要附加全通淹波器的设计运算量以及额外的矫正算法运算量;2、运用两个完全相同的遮波器,将通过第一个波波器后的信号反转再通过其次个速波器,再将其次个滤波器的输出序列反转作为整个系统的输出。综上我们采纳其次种方法,用MAT1.AB实现:clearclccloseall%生成一个信号Fs=I(XX);t=(O:l/Fs:l);y=sin(2*pl*5t+pi4)+sin(2*p50t+pl5)+sln(2*pi*60*t+pl1
2、2);yy=sin(2,pi*5*t+pi4);figure(l)subplot(211)Pot(t,y),gridontitle(输入信号波形,)XlabeI(V)ylabel(lmagnitudel)subplot(212)plot(t,angle(y)title。输入信号相位)XlabeICf)ylabel(,angle)%设计一个低通泄波器fp=10So0;%通带截止频率fs=3O/5OO;%阻带极止频率WP=3;%通带最大衰减ws=30;%阻带最大衰减(n,fc)=buttord(fp,fs.wp,ws);(b,a=btter(n,fc);figure(4)freqz(b,a);%将
3、生成的信号通过低通滤波器z=filter(b,a,y);figure(2)subplot(221)Pot(t,z)title(通过第一个泄波器后的波形)XlabeICf)ylabel(output)axis(01-11)subplot(222)plot(t,angle(z)title(通过第一个滤波器后的相位)XlabeICt)ylabel(,a11ge)subplot(223)Pot(t,yy)titled理论上过迪后的波形xlabel(f)ylabel(output)ais(01-11)subplot(224)plot(t,angle(y);title(原相位)XlabeICt);ylab
4、el(,angle)zf=fliplr(z);%对经过第一个滤波器后的信号序列反转zfz=filter(b,a,zf);%对经过第一个谑波器后的信号序列反转再通过滤波器zz=fliplr(zfz);%时经过两次浊波器后的输出反转作为最终输出figuresubplot(221)Pot(t,zz)HtIeC通过两个泄波器后的波形)XlabeICt)ylabel(output)ais(01-11)subplot(222)plot(t,angle(zz)title(,通过两个浊波器后的相位,)XlabeICt)ylabel(,angle,)subplot(223)Pot(t,yy)title。理论上过
5、港后的波形,)xabel(,f)ylabel(,output,)axis(01-11)subplot(224)plot(t,angle(yy);title。原相位,)xabel(,f);ylabel(,angle,)%波形的前端和后渊有失真,所以对信号进行延拓fori=l=llytleft(i)=y(1002-i);ytright(i)=y(l2-i);endyt=ytleftyytright;tt=(0:3/(length(yt)-l):3);figure(5)subplot(211)plot(ttzyt)HtIeC通过镜像延拓后的输入信号波形)XlabeICt)ylabel(,input)
6、subplot(212)plot(tt,angle(yt)titled通过镜像延拓后的输入信号的相位?xlabel(t)ylabel(,angle)%将生成的信号通过低通滤波器z=filter(b,a,yt);figure(6)subplot(221)Pot(tt,z)title。通过第个泄波器后的波形,)XlabeICt)ylabel(,output,)ais(l211)subplot(222)plot(tt,angle(z)title(通过第一个滤波器后的相位,)xabel(,f)ylabel(,angle)axis(1204)subplot(223)plot(t,yy)titled理论上
7、过油后的波形)XlabeICt)ylabel(output)axis(01-11)subplot(224)plot(t,angle(yy);Htle(原相位xlabel(,t,);ylabel(,angle,)axis(0104)zf=fliplr(z);zfz=filter(b,a,zn;%对经过第一个浊波器后的信号序列髭转再通过泄波器zz=fliplr(zfz);figure(7)subplot(221)fori=l:1001output(i)=zz(1001+i);endplot(t,output)HtIeC通过两个灌波器后的波形)xlabel(t)ylabel(output)axis(
8、01-11)subplot(222)plot(t,angle(output)tit,通过两个迪波器后的相位)xlabel(t)ylabel(,angle)axis(010411subplot(223)Pot(t,y)HtIeC理论上过滤后的波形xlabel(t)y1abel(,output,)axis(01-11)subplot(224)plot(t,angle(yy);titled原相位,)XlabeICt);ylabel(angle,)axis(010411输出结果:,1.WndgH*口口目口1KEdtVwWtTdDHlaBOd、Y;/-2000010203040506070809NormalizedFfeqiMccy(Rnds3me)OF34filedtVwInedTookDetkxopWindowHdpdj:,壮/-0口目;Q2000-100200-300-400BJe7