1 / 4
文档名称:

MATLAB 巴特沃兹滤波器.doc

格式:doc   大小:22KB   页数:4页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

MATLAB 巴特沃兹滤波器.doc

上传人:花花世界 2019/1/30 文件大小:22 KB

下载得到文件列表

MATLAB 巴特沃兹滤波器.doc

文档介绍

文档介绍:相位是信号的一个重要参数,所以一般在滤波中希望实现零相位偏移或具有线性相位偏移。现在大致有两类方法实现零相位偏移:1、将滤波器与一个全通滤波器级联,用后者的相位响应矫正前者。需要附加全通滤波器的设计运算量以及额外的矫正算法运算量;2、使用两个完全相同的滤波器,将通过第一个滤波器后的信号反转再通过第二个滤波器,再将第二个滤波器的输出序列反转作为整个系统的输出。综上我们采用第二种方法,用MATLAB实现:loseall%生成一个信号Fs=1000;t=(0:1/Fs:1);y=sin(2*pi*5*t+pi/4)+sin(2*pi*50*t+pi/5)+sin(2*pi*60*t+pi/12);yy=sin(2*pi*5*t+pi/4);figure(1)subplot(211)plot(t,y),gridontitle('输入信号波形')xlabel('t')ylabel('magnitude')subplot(212)plot(t,angle(y))title('输入信号相位')xlabel('t')ylabel('angle')%设计一个低通滤波器fp=10/500;%通带截止频率fs=30/500;%阻带截止频率wp=3;%通带最大衰减ws=30;%阻带最大衰减[n,fc]=buttord(fp,fs,wp,ws);[b,a]=butter(n,fc);figure(4)freqz(b,a);%将生成的信号通过低通滤波器z=filter(b,a,y);figure(2)subplot(221)plot(t,z)title('通过第一个滤波器后的波形')xlabel('t')ylabel('output')axis([01-11])subplot(222)plot(t,angle(z))title('通过第一个滤波器后的相位')xlabel('t')ylabel('angle')subplot(223)plot(t,yy)title('理论上过滤后的波形')xlabel('t')ylabel('output')axis([01-11])subplot(224)plot(t,angle(yy));title('原相位')xlabel('t');ylabel('angle')zf=fliplr(z);%对经过第一个滤波器后的信号序列反转zfz=filter(b,a,zf);%对经过第一个滤波器后的信号序列反转再通过滤波器zz=fliplr(zfz);%对经过两次滤波器后的输出反转作为最后输出figure(3)subplot(221)plot(t,zz)title('通过两个滤波器后的波形')xlabel('t')ylabel('output')axis([01-11])subplot(222)plot(t,angle(zz))title('通过两个滤波器后的相位')xlabel('t')ylabel('angle')subplot(223)plot(t,yy)title('理论上过滤后的波形')xlabel('t')ylabel('output')axis([01-11])subplot(224)plot(t,angle(yy));title('原相位')xlabel('t');ylabel('angle')%波形的前端和后端有失真,所以对信号进行延拓