设计数字低通滤波器(用matlab实现)
基于Matlab的巴特沃斯数字低通滤波器的设计

stga"TcM d m n a , Tc [ . . . ] ; e(c , i oe, aul i ,00 20 3051 ) X k X k
s (c , TcM d m n a , Tc [ t Rp1 ) e ga Y i oe, aul i ,0An i ] ; t k Y k
D( ) sD2s … D ( ) s =D () ( ) 5 () 7
当阶段 为奇数 时 : D() 。sD () :s… D () s =D () sD () s
1 2 巴特 沃斯 滤 波器 的特性 .
() 8
巴特沃斯 滤波 器 的特 点是 通频 带 的频率 响应 曲线 最平 滑 , 即频 率 响应 曲线 在 通 频带 内最 大 限度 平坦 , 有起伏 , 没 而在阻频 带则 逐渐 下降 为零 . 在振 幅 的对 数对 角频率 的波 特 图上 , 一 边界角 频率 开 从某 始, 振幅 随着角 频率 的增 加而逐 步减 少 , 于 负无穷 大 . 趋 利用 巴特沃 斯低 通 滤波 器 对 低 频段 的音 频信 号
对 音 频 信 号进 行 了处理 .
关键词 : 巴特沃斯 ; 滤波器; t bቤተ መጻሕፍቲ ባይዱ仿真 Maa ; l
中 图分 类 号 : P9 T33 文献标识码 : A 文 章 篇 号 :0 824 ( 0 2 0 -0 30 1o .4 1 2 1 ) 20 1 -3
M tb功能强大 , aa l 其信号处理工具箱( i a P cs n ol x 可 以快速有效地实现数字滤波器的 S nl r e i To o) g o s g b 设计与仿真 , 为滤波器的设计提供 了一个方便 的平台. 利用 M tb aa 设计数字滤波器在数字通信系统 和 l 计算机领域 中有着广阔的应用前景. 巴特沃斯 滤波器是 I I R数字滤波器 的一种【] 由于其在滤波的过 1, 程中通频带 内具有最大限度平坦 , 使得对音频信号进行平滑处理有较好的效果. 本文所设计的巴特沃斯 数字低通滤波器对一段音频信号进行了滤波处理 , 滤除了高频分量 , 音频信号的听觉效果经过滤波后变 得低 沉 , 明所 设计 的低 通滤 波器 是有 效 的. 表
用Matlab设计的低通数字滤波器

指导教师评定成绩:审定成绩:重庆邮电大学自动化学院综合课程设计报告低通数字滤波器设计单位(二级学院):自动化学生姓名:专业:自动化班级:0810902学号:指导教师:设计时间:2012 年11月重庆邮电大学自动化学院制摘要本次设计以AT89S52单片机为控制器件,利用AD/DA转换芯片构成低通数字滤波器。
首先利用MATLAB根据要求设计低通滤波器模型并在该平台进行初步仿真得到较为理想的效果。
接着利用proteus软件搭建硬件电路,并对编写的程序进行检测;程序检测无误后,再用Protel画出电路图。
首先利用ADC0809将模拟信号转换成数字信号输入单片机,正弦模拟信号由AD9850模块产生,是一般正常的低频正弦波;另一个噪声信号是通过单片机产生的高频脉冲信号。
然后通过滤波程序将采集的数据进行算法滤波,滤波后的数据通过DAC0832输出,将DA0832的输出信号通过一级运放(UA741)转换成电压输出。
最后将运放输出的结果接到示波器上进行显示。
关键字:AT89C51、DDS、ADC0809、DAC0832、UA741设计题目题目与要求低通滤波器是允许低频讯号通过,而不允许高频讯号通过的滤波器。
本题目要求用单片机(型号任选)制作一个低通数字滤波器,要求:1.根据确定的采样频率,用MATLAB设计低通滤波器模型以满足不同截止频率需求,并进行仿真;2.用单片机设计并制作一个低通数字滤波器,实现数据采集、滤波处理、信号输出等功能(包括软、硬件);3.滤波器能与PC机通信,设计通信协议,实现截止频率参数的调节、原始信号采样数据与滤波后数据的上传;4.利用高级语言开发工具,设计PC机端的程序,可以调节滤波器参数,接收滤波器上传的原始信号采样数据与滤波后数据,并能绘图、保存;5.设计几种不同频率、类型的噪声,利用滤波器进行试验,记录实验情况并进行分析、总结;6.按规定的统一格式设计报告。
目录第一章 MATLAB仿真 (4)1.1方案论证 (4)1.2设计方法及原理介绍 (4)1.3 matlab编程实现 (5)1.4 Simulink仿真结构图 (5)第二章硬件设计方案 (6)2.1硬件功能整体设计 (6)2.2单片机最小系统 (7)2.3 ADC0809和74HC74 (7)2.4 DAC0832和UA741 (8)2.5 串口部分 (9)2.6 DDS部分 (9)第三章软件设计 (10)3.1 单片机软件设计 (10)3.2 PC机通信软件设计 (12)第四章心得体会 (13)参考文献 (14)附件1:方波源程序 (15)附件2:DDS正弦信号模块 (15)附件3:主单片机程序 (19)附录4:protues原理图 (21)附录5:protel电路图 (22)附录6:DDS原理图 (22)第一章 MATLAB 仿真1.1方案论证数字滤波器,按功能分类,可以分成低通、高通、带通、带阻、全通滤波器;按实现的网络结构或单位抽样响应分类:可以分成无限脉冲响应滤波器(IIR 滤波器)、有限脉冲响应滤波器(FIR 滤波器)。
数字滤波器的设计及其MATLAB实现

设计低通数字滤波器,要求在通带内频率低于0.2pirad时,允许幅度误差在1dB以内,在频率0.3pi rad~pi rad之间的阻带衰减大于15dB,用脉冲响应不变法设计数字滤波器,T=1: 切比雪夫I型模拟滤波器的设计子程序:function [b,a]=afd_chb1(Omegap,Omegar,Ar)if Omegap<=0error('通带边缘必须大于0')endif(Dt<=0)|(Ar<0)error('通带波动或阻带衰减必须大于0');endep=sqrt(10^(Dt/10)-1);A=10^(Ar/20);OmegaC=Omegap;OmegaR=Omegar/Omegap;g=sqrt(A*A-1)/ep;N=ceil(log10(g+sqrt(g*g-1))/log10(OmegaR+sqrt(OmegaR*OmegaR-1)));fprintf('\n***切比雪夫I型模拟低通滤波器阶数=%2.0f\n',N);[b,a]=u_chblap(N,Dt,OmegaC);设计非归一化切比雪夫I型模拟低通滤波器原型程序:function [b,a]=u_chblap(N,Dt,OmegaC)[z,p,k]=cheb1ap(N,Dt);a=real(poly(p));aNn=a(N+1);p=p*OmegaC;a=real(poly(p));aNu=a(N+1);k=k*aNu/aNn;b0=k;B=real(poly(z));b=k*B;直接形式转换成级联形式子程序:function [C,B,A]=sdir2cas(b,a)Na=length(a)-1;Nb=length(b)-1;b0=b(1);b=b/b0;a0=a(1);a=a/a0;C=b0/a0;p=cplxpair(roots(a));K=floor(Na/2);if K*2==NaA=zeros(K,3);for n=1:2:NaArow=p(n:1:n+1,:);Arow=poly(Arow);A((fix(n+1)/2),:)=real(Arow);elseif Na==1A=[0 real(poly(p))];elseA=zeros(K+1,3);for n=1:2:2*KArow=p(n:1:n+1,:);Arow=poly(Arow);A((fix(n+1)/2),:)=real(Arow);endA(K+1,:)=[0 real(poly(p(Na)))];endz=cplxpair(roots(b));K=floor(Nb/2);if Nb==0B=[0 0 poly(z)];elseif K*2==NbB=zeros(K,3);for n=1:2:NbBrow=z(n:1:n+1,:);Brow=poly(Brow);B((fix(n+1)/2),:)=real(Brow);endelseif Nb==1B=[0 real(poly(z))];elseB=zeros(K+1,3);for n=1:2:2*KBrow=z(n:1:n+1,:);Brow=poly(Brow);B((fix(n+1)/2),:)=real(Brow);endB(K+1,:)=[0 real(poly(z(Nb)))];End计算系统函数的幅度响应和相位响应子程序:function [db,mag,pha,w]=freqs_m(b,a,wmax)w1=0:500;w=w1*wmax/500;h=freqs(b,a,w);mag=abs(h);db=20*log10((mag+eps)/max(mag));pha=angle(h);脉冲响应不变法程序:function [b,a]=imp_invr(c,d,T)[R,p,k]=residue(c,d);p=exp(p*T);[b,a]=residuez(R,p,k);b=real(b).*T;数字滤波器响应子程序:function [db,mag,pha,grd,w]=freqz_m(b,a);[H,w]=freqz(b,a,1000,'whole');H=(H(1:501))';w=(w(1:501))';mag=abs(H);db=20*log10((mag+eps)/max(mag));pha=angle(H);grd=grpdelay(b,a,w);直接转换成并联型子程序:function [C,B,A]=dir2par(b,a)M=length(b);N=length(a);[r1,p1,C]=residuez(b,a);p=cplxpair(p1,10000000*eps);x=cplxcomp(p1,p);r=r1(x);K=floor(N/2);B=zeros(K,2);A=zeros(K,3);if K*2==Nfor i=1:2:N-2br=r(i:1:i+1,:);ar=p(i:1:i+1,:);[br,ar]=residuez(br,ar,[]);B((fix(i+1)/2),:)real(br');A((fix(i+1)/2),:)real(ar');end[br,ar]=residuez(r(N-1),p(N-1),[]);B(K,:)=[real(br') 0];A(K,:)=[real(ar') 0];elsefor i=1:2:N-1br=r(i:1:i+1,:);ar=p(i:1:i+1,:);[br,ar]=residuez(br,ar,[]);B((fix(i+1)/2),:)real(br);A((fix(i+1)/2),:)real(ar);endEnd比较两个含同样标量元素但(可能)有不同下标的复数对及其相位留数向量子程序:function I=cplxcomp(p1,p2)I=[];for i=1:length(p2)for j=1:length(p1)if(abs(p1(j)-p2(i))<0.0001)I=[I,j];endendendI=I';双线性变换巴特沃斯低通滤波器设计:巴特沃思模拟滤波器的设计子程序:function [b,a]=afd_butt(wp,ws,Rp,rs)if wp<=0error('通带边缘必须大于0');endif ws<=wperror('阻带边缘必须大于通带边缘');endif(Rp<=0)|(Rs<0)error('通带波动或阻带衰减必须大于0');endN=ceil((log10((10^(Rp/10)-1)/(10^(Rs/10)-1)))/(2*log10(wp/ws))); fprintf('\n***Butterworth Filter Order=%2.0f\n',N);OmegaC=wp/((10^(Rp/10)-1)^(1/(2*N)));[b,a]=u_buttap(N,OmegaC)设计非归一化巴特沃思模拟低通滤波器原型子程序:function [b,a]=u_buttap(N,OmegaC)[z,p,k]=buttap(N);p=p*OmegaC;k=k*OmegaC^N;B=real(poly(z));b0=k;b=k*B;a=real(poly(p));直接型到级联型形式的转换:function [b0,B,A]=dir2cas(b,a)b0=b(1);b=b/b0;a0=a(1);a=a/a0;b0=b0/a0;M=length(b);N=length(a);if N>Mb=[b,zeros(1,N-M)];a=[a,zeros(1,M-N)];elseNM=0;endk=floor(N/2);B=zeros(k,3);A=zeros(k,3);if k*2==Nb=[b,0];a=[a,0];endbroots=cplxpair(roots(b));aroots=cplxpair(roots(a));for i=1:2:2*kbr=broots(i:1:i+1,:);br=real(polt(br));B((fix(i+1)/2),:)=br;ar=aroots(i:1:i+1,:);ar=real(polt(ar));A((fix(i+1)/2),:)=ar;Endfunction [db,mag,pha,grd,w]=freqz_m(b,a)[h,w]=freqz(b,a,1000,'whole');h=(h(1:501))';w=(w(1:501))';mag=abs(h);db=20*log10((mag+eps)/max(mag));pha=angle(h);grd=grdelay(b,a,w);设计一个巴特沃思高通滤波器,要求通带截止频率为0.6pi,通带内衰减不大于1dB,阻带·起始频率为0.4pi,阻带内衰减不小于15dB,T=1:>> wp=0.6*pi;ws=0.4*pi;>> Rp=1;Rs=15;T=1;>> [N,wn]=buttord(wp/pi,ws/pi,Rp,Rs) 计算巴特沃思滤波器阶数和截止频率N =4wn =>> [b,a]=butter(N,wn,'high'); 频率变换法计算巴特沃思高通滤波器>> [C,B,A]=dir2cas(b,a)C =0.0751B =1.0000 -2.0000 1.00001.0000 -2.0000 1.0000A =1.0000 0.1562 0.44881.0000 0.1124 0.0425>> [db,mag,pha,grd,w]=freqz_m(b,a);>> subplot(2,1,1);plot(w/pi,mag);>> subplot(2,1,2);plot(w/pi,db);椭圆带通滤波器的设计--ellip函数的应用:>> ws=[0.3*pi 0.75*pi]; 数字阻带边缘频率>> wp=[0.4*pi 0.6*pi]; 数字通带边缘频率>> Rp=1;Rs=40;>> Ripple=10^(-Rp/20); 通带波动>> Attn=10^(-Rs/20); 阻带衰减>> [N,wn]=ellipord(wp/pi,ws/pi,Rp,Rs) 计算椭圆滤波器参数N =4wn =0.4000 0.6000>> [b,a]=ellip(N,Rp,Rs,wn); 数字椭圆滤波器的设计>> [b0,B,A]=dir2cas(b,a) 级联形式实现b0 =0.0197B =1.0000 1.5066 1.00001.0000 0.9268 1.00001.0000 -0.9268 1.00001.0000 -1.5066 1.0000A =1.0000 0.5963 0.93991.0000 0.2774 0.79291.0000 -0.2774 0.79291.0000 -0.5963 0.9399>> figure(1);>> [db,mag,pha,grd,w]=freqz_m(b,a);>> subplot(2,2,1);plot(w/pi,mag);>> grid on;>> subplot(2,2,3);plot(w/pi,db);grid on;>> subplot(2,2,2);plot(w/pi,pha/pi);grid on;>> subplot(2,2,4);plot(w/pi,grd);设计一个巴特沃思带阻滤波器,要求通带上下截止频率为0.8pi、0.2pi,通带内衰减不大于1dB,阻带上起始频率为0.7pi、0.4pi,阻带内衰减不小于30dB:>> wp=[0.2*pi 0.8*pi];>> ws=[0.4*pi 0.7*pi];>> Rp=1;Rs=30;>> [N,wn]=buttord(wp/pi,ws/pi,Rp,Rs);>> [b,a]=butter(N,wn,'stop');>> [C,B,A]=dir2cas(b,a)C =0.0394B =1.0000 0.3559 0.99941.0000 0.3547 1.00401.0000 0.3522 0.99541.0000 0.3499 1.00461.0000 0.3475 0.99601.0000 0.3463 1.0006A =1.0000 1.3568 0.79281.0000 1.0330 0.46331.0000 0.6180 0.17751.0000 -0.2493 0.11131.0000 -0.6617 0.37551.0000 -0.9782 0.7446>> [db,mag,pha,grd,w]=freqz_m(b,a); >> subplot(2,1,1);plot(w/pi,mag);>> subplot(2,1,2);plot(w/pi);数字低通---数字带阻:function [bz,az]=zmapping(bZ,aZ,Nz,Dz) bzord=(length(bZ)-1)*(length(Nz)-1); azord=(length(aZ)-1)*(length(Dz)-1);bz=zeros(1,bzord+1);for k=0:bzordpln=[1];for i=0:k-1pln=conv(pln,Nz);endpld=[1];for i=0:bzord-k-1pld=conv(pld,Dz);endbz=bz+bZ(k+1)*conv(pln,pld); endfor k=0:azordpln=[1];for i=0:k-1pln=conv(pln,Nz);endpld=[1];for i=0:azord-k-1pld=conv(pld,Dz);endaz=az+aZ(k+1)*conv(pln,pld); endall=az(1);az=az/az1;bz=bz/az1;线性相位FIR滤波器的幅度特性:function pzkplot(num,den)hold on;axis('square');x=-1:0.01:1;y=(1-x.^2).^0.5;y1=-(1-x.^2).^0.5;plot(x,y,'b',x,y1,'b');num1=length(num);den1=length(den);if(num1>1)z=roots(num);elsez=0;endif(den1>1)p=roots(den);elsep=0;endif(num>1&den1>1)r_max_z=max(abs(real(z)));i_max_z=max(abs(imag(z)));a_max_z=max(r_max_z,i_max_z);r_max_p=max(abs(real(p)));i_max_p=max(abs(imag(p)));a_max_p=max(r_max_p,i_max_p);a_max=max(a_max_z,a_max_p);elseif (num1>1)r_max_z=max(abs(real(z)));i_max_z=max(abs(imag(z)));a_max=max(r_max_z,i_max_z);elser_max_p=max(abs(real(p)));i_max_p=max(abs(imag(p)));a_max=max(r_max_p,i_max_p);endaxis([-a_max a_max -a_max a_max]);plot([-a_max a_max],[0 0],'b');plot([0 0],[-a_max a_max],'b');plot([-a_max a_max],[a_max a_max],'b');plot([a_max a_max],[-a_max a_max],'b');Lz=length(z);for i=1:Lz;plot(real(z(i)),imag(z(i)),'bo');endLp=length(p);for j=1:Lpplot(real(p(j)),imag(p(j)),'bx');endtitle('The zeros-pole plot');xlabel('虚部');ylabel('实部');function [Hr,w,a,L]=Hr_Type1(h)M=length(h);L=(M-1)/2;a=[h(L+1) 2*h(L:-1:1)];n=[0:1:L];w=[0:1:500]'*pi/500;Hr=cos(w*n)*a';设计I型线性相位FIR滤波器:>> h=[-4 1 -1 -2 5 6 5 -2 -1 1 -4];>> M=length(h);n=0:M-1;>> [Hr,w,a,L]=Hr_Type1(h);>> amax=max(a)+1;>> amin=min(a)-1;>> subplot(2,2,1);stem(n,h);>> axis([-1 2*L+1 amin amax]);text(2*L+1.5,amin,'n'); >> xlabel('n');ylabel('h(n)');title('脉冲响应');>> subplot(2,2,3);stem(0:L,a);>> axis([-1 2*L+1 amin amax]);>> xlabel('n');ylabel('a(n)');title('a(n) 系数');>> subplot(2,2,2);plot(w/pi,Hr);>> grid on;text(1.05,-20,'频率pi');>> xlabel('频率');ylabel('Hr');title('I 型振幅响应');>> subplot(2,2,4);pzkplot(h,1);>> title('零极点分布');function [hr,w,b,L]=Hr_Type2(h)M=length(h);L=M/2;b=2*h(L:-1:1);n=[1:1:L];n=n-0.5;w=[0:1:500]'*pi/500;hr=cos(w*n)*b';II型线性相位FIR滤波器:>> h=[-4 1 -1 -2 5 6 5 -2 -1 1 -4];>> M=length(h);n=0:M-1;>> [Hr,w,b,L]=Hr_Type2(h);Warning: Integer operands are required for colon operator when used as index. > In Hr_Type2 at 2>> bmax=max(b)+1;bmin=min(b)-1;>> subplot(2,2,1);stem(n,h);axis([-1 2*L+1 bmin bmax]);text(2*L+1.5,bmin,'n');xlabel('n');ylabel('h(n)');title('脉冲响应');>> subplot(2,2,3);stem(1:L,b);axis([-1 2*L+1 bmin bmax]);xlabel('n');ylabel('b(n)');title('b(n) 系数');>> subplot(2,2,2);plot(w/pi,Hr);grid on;text(1.05,-20,'频率pi');xlabel('频率');ylabel('Hr');title('II 型振幅响应');>> subplot(2,2,4);pzkplot(h,1);title('零极点分布');function [hr,w,c,L]=Hr_Type3(h)M=length(h);L=(M-1)/2;b=2*h(L+1:-1:1);n=[1:1:L];w=[0:1:500]'*pi/500;hr=cos(w*n)*c';用MA TLAB编程绘制各种窗函数的形状。
课程设计-低通滤波器设计(含matlab程序)

课程设计-低通滤波器设计(含matlab程序)2010/2011学年第2 学期学院:信息与通信⼯程学院专业:电⼦信息科学与技术学⽣姓名:学号:课程设计题⽬:低通滤波器设计起迄⽇期: 6 ⽉13 ⽇~6⽉24⽇课程设计地点:指导教师:系主任:下达任务书⽇期: 2011 年 6 ⽉12 ⽇课程设计任务书课程设计任务书⽬录1 设计⽬的及要 (5) 1.1设计⽬的 (5)1.2设计内容和要求 (5)2 设计原理 (5)2.1 FIR滤波器 (5) 2.2窗函数 (6)2.3矩形窗 (7)3 设计过程 (8)3.1 设计流程图 (8)3.2 产⽣原始信号并分析频谱 (8)3.3 使⽤矩形窗设计不同特性的数字滤波器 (10)3.4 信号滤波处理 (11)4 实验结果及分析 (12)5 课程设计⼼得体会 (12)6 参考⽂献 (13)附录: (14)低通滤波器的设计1 设计⽬的及要求1.1设计⽬的设计⼀种低通滤波器并对信号进⾏滤波。
低通滤波器的作⽤是滤去信号中的中频和⾼频成分,增强低频成分。
要求做到:1.了解MATLAB 的信号处理技术;2.使⽤MATLAB 设计低通滤波器,掌握其滤波处理技术;3.对滤波前和滤波后的波形进⾏时域和频域⽐较。
1.2设计内容和要求1.熟悉有关采样,频谱分析的理论知识,对信号作频谱分析;2.熟悉有关滤波器设计理论知识,选择合适的滤波器技术指标,设计低通滤波器对信号进⾏滤波,对⽐分析滤波前后信号的频谱;3.实现信号频谱分析和滤波等有关MATLAB 函数;2 设计原理本次课程设计,我们主要是基于矩形窗的FIR 滤波器来设计⼀个低通滤波器。
2.1 FIR 滤波器FIR 滤波器即有限抽样响应因果系统,其单位抽样响应h(n)是有限长的;极点皆位于z=0处;结构上不存在输出到输⼊的反馈,是⾮递归型的。
其系统函数表⽰为:()()n -1-N 0n z n h z H ∑==普通的FIR 滤波器系统的差分⽅程为:()()()i n x i h n y 1N 0i -=∑-=式中:N 为FIR 滤波器的抽头数;x(n)为第n 时刻的输⼊样本;h(i)为FIR 滤波器第 i 级抽头系数。
基于Matlab的FIR低通滤波器设计及simulink仿真实现

基于Matlab的FIR低通滤波器设计及simulink仿真实现2012题目基于Matlab的FIR低通滤波器设计及simulink仿真实现学院自动化与电气工程学院专业测控技术与仪器班级 083 学号108034063 学生姓名 xxx 指导教师 xxx 完成日期 2012年5月25日xxx 科技学院本科毕业论文(2012届)题目基于Matlab的FIR低通滤波器设计及simulink 仿真实现学院自动化与电气工程学院专业测控技术与仪器083 班级学号 108034063学生姓名 xxx指导教师 xxx完成日期 2012年5月25号xxx科技学院毕业设计、学位论文版权使用授权书本人 xxx 学号 108034063 声明所呈交的毕业设计、学位论文《基于Matlab 的FIR低通滤波器设计及simulink仿真实现》,是在导师指导下进行的研究工作及取得的研究成果。
除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,与我一同工作的人员对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。
本毕业设计、学位论文作者愿意遵守xxx科技学院关于保留、使用学位论文的管理办法及规定,允许毕业设计、学位论文被查阅。
本人授权 xxx科技学院可以将毕业设计、学位论文的全部或部分内容编入有关数据库在校园网内传播,可以采用影印、缩印或扫描等复制手段保存、汇编毕业设计、学位论文。
(保密的学位论文在解密后适用本授权书)论文作者签名:xxx 导师签名: xxx签字日期: 2012 年5月 25日签字日期: 2012 年 5 月 25日浙江科技学院本科毕业设计摘要数字滤波器是数字信号处理的一个重要的技术分支。
在现代电子系统中,FIR 数字滤波器以其良好的线性特性被广泛使用,属于数字信号处理的基本模块之一。
在工程实践中,一般对信号处理要求有实时性和灵活性,而已有的一些软件和硬件计算和实现方式则难以同时达到这两方面的要求。
利用MATLAB实现数字低通滤波器的设计

西南石油大学实验报告一实验目的:1学习用Matlab直接设计模拟滤波器和数字滤波器。
2学习用冲激响应不变法和双线性变换法的Matlab的实现。
二实验内容:设计满足下列指标的数字低通滤波器:Wp=0.2*pi, Rp=1db Ws=0.5*pi Rs=20db Fs=1khz1.利用B、C1型设计出模拟低通滤波器,采用冲激响应不变法、双线性发转换成数字低通滤波器。
2.直接设计出B、C1型数字低通滤波器。
三实验步骤:程序1Wp=2*pi*0.1*1000;Ws=2*pi*0.25*1000;Rp=1;Rs=20;[N,Wn]=buttord(Wp,Ws,Rp,Rs,'s');[z,p,k]=buttap(N);[B,A]=butter(N,Wn,'s');freq1=linspace(0,Wp,5);freq2=linspace(Wp,Ws,15);freq3=linspace(Ws,10*pi*2,25);h1=20*log10(abs(freqs(B,A,freq1)));h2=20*log10(abs(freqs(B,A,freq2)));h3=20*log10(abs(freqs(B,A,freq3)));plot([freq1 freq2 freq3]/(2*pi),[h1,h2,h3]);grid;Xlabel('Frequency in Hz');Ylabel('gain in DB');图一程序2wp=0.2*pi;ws=0.5*pi;rp=1;rs=20;fs=1000;omegap=wp*fs;omegas=ws*fs;[N,Wn]=buttord(omegap,omegas,rp,rs,'s');[B A]=butter(N,Wn,'s');[b,a]=impinvar(B,A,fs);[h,w]=freqz(b,a,256);h=20*log10(abs(h));plot(w/pi,h);图二程序3wp=0.2*pi;ws=0.5*pi;rp=1;rs=20;fs=1000;omegap=2*fs*tan(wp/2);omegas=2*fs*tan(ws/2);[N,Wn]=cheb1ord(omegap,omegas,rp,rs,'s');[B A]=cheby1(N,rp,Wn,'s');[b,a]=bilinear(B,A,fs);[h,w]=freqz(b,a,256);h=20*log10(abs(h));plot(w/pi,h);图三程序4wp=0.2*pi;ws=0.5*pi;rp=1;rs=20;[N,Wn]=buttord(wp/pi,ws/pi,rp,rs);[B A]=butter(N,Wn);[h,w]=freqz(B,A,256);h=20*log10(abs(h));plot(w/pi,h);图四程序5Wp=0.2*pi;Ws=0.5*pi;Rp=1;Rs=20;T=0.001;Fs=1000;omegap=(2/T)*tan(Wp/2);omegas=(2/T)*tan(Ws/2);[N,Wn]=cheb1ord(omegap,omegas,Rp,Rs,'s'); [B,A]=cheby1(N,Rp,Wn,'s');[b,a]=bilinear(B,A,Fs);[h,w]=freqz(b,a,256);h1=20*log10(abs(h));plot(w/pi,h1);grid;xlabel('Digital Frequency in pi units'); ylabel('Gain in DB');axis([0 1 -50 10]);图五Wp=0.2;Ws=0.5;Rp=1;Rs=20;disp('ÇбÈÑ©·òIÐÍ')[N,Wn]=cheb1ord(Wp,Ws,Rp,Rs)[B,A]=cheby1(N,Rp,Wn);disp('ÇбÈÑ©·òÐÍ·Ö×Ó¶àÏîʽ');fprintf('%.4e\n',B);disp('ÇбÈÑ©·ò·Öĸ¶àÏîʽ');fprintf('%.4e\n',A);w=linspace(0,0.8*pi,50);h1=20*log10(abs(freqz(B,A,w)));plot(w/pi,h1);grid;xlabel('Normalized frequency');ylabel('Gain in DB ');axis([0 0.8 -50 1]);图六四、实验小结通过本次实验,对MA TLAB软件有了进一步的了解,也在不断的实践中,更多的熟悉了MATLAB的编程,在编程方面一点点的有了进步。
基于Matlab的IIR Butterworth低通数字滤波器设计

问题:信号滤波是一个非常重要的信号处理手段,大量的信号处理系统中,信号滤波的质量将直接影响到系统整体性能。
现在有家医院向你提出一个问题,她们的心电图信号记录仪器由于受到了比较严重的电源干扰(50Hz附近),记录到的心电图ECG波形有较大的畸变,请问如何设计一个干扰滤除系统,让记录下的ECG数据继续可以进行疾病诊断。
(ECG的波形信息非常重要,设计滤波器需要注意这一点)基于Matlab的IIR Butterworth低通数字滤波器设计0 引言心电信号是心脏电活动在人体体表的表现,它一般比较微弱,其频率为0.05Hz~ 100Hz(能量集中在0. 05Hz~ 44Hz),幅度为几百微伏至几毫伏。
因此,在心电信号的采集过程中,极易受到内、外界环境的干扰,其中50Hz的工频干扰尤为突出。
心电图信号的干扰对心电图数据分析和压缩有一定影响。
如何消除50Hz工频干扰,成为处理心电信号的首要任务。
为了消除ECG数据中的主要干扰,保留有用信号或者从干扰中“抽取”有用信号,人们提出了许多方法,诸如,平滑滤波,中心频率固定的带阻滤波器,自适应滤波,低通数字滤波等等。
这些信号处理方法各有优缺点,平滑滤波算法简单,处理速度快,滤波效果较好,但存在一定的削峰作用;中心频率固定的带阻滤波器原理简单,能较大程度地抑制50Hz工频干扰,但存在“群延时”现象;自适应滤波器的中心频率能够跟随工频信号的频率幅度变化而自动调节并抵消工频干扰,但需要附加参考信号通道,算法相对复杂,难以用于实时处理。
考虑到工频干扰是50Hz的低频信号,假设要处理的ECG信号为0.05HZ~44HZ段信号,且Matlab软件中有一个数字滤波器软件包,可以直接进行调用处理信号,所以本文设计IIR巴特沃斯(Butterworth)低通数字滤波器来实现人体ECG信号的滤波。
1 数字滤波器介绍数字滤波器是一种用来过滤时间离散信号的数字系统,它可以用软件(计算机程序)或用硬件来实现,而且在两种情况下都可以用来过滤实时信号或非实时信号(记录信号)。
设计数字低通滤波器(用matlab实现)

DSP 设计滤波器报告姓名:张胜男 班级:07级电信(1)班 学号:078319120一·低通滤波器的设计(一)实验目的:掌握IIR 数字低通滤波器的设计方法。
(二)实验原理:1、滤波器的分类滤波器分两大类:经典滤波器和现代滤波器。
经典滤波器是假定输入信号)(n x 中的有用成分和希望取出的成分各自占有不同的频带。
这样,当)(n x 通过一个线性系统(即滤波器)后可讲欲去除的成分有效的去除。
现代滤波器理论研究的主要内容是从含有噪声的数据记录(又称时间序列)中估计出信号的某些特征或信号本身。
经典滤波器分为低通、高通、带通、带阻滤波器。
每一种又有模拟滤波器(AF )和数字滤波器(DF )。
对数字滤波器,又有IIR 滤波器和FIR 滤波器。
IIR DF 的转移函数是:∑∑=-=-+==Nk k k M r r rz a z b z X z Y z H 101)()()(FIR DF 的转移函数是:∑-=-=10)()(N n nz n h z HFIR 滤波器可以对给定的频率特性直接进行设计,而IIR 滤波器目前最通用的方法是利用已经很成熟的模拟滤波器的设计方法进行设计。
2、滤波器的技术要求低通滤波器:p ω:通带截止频率(又称通带上限频率) s ω:阻带下限截止频率 p α:通带允许的最大衰减s α:阻带允许的最小衰减 (p α,s α的单位dB ) p Ω:通带上限角频率 s Ω:阻带下限角频率 (s p p T ω=Ω,s s s T ω=Ω)即 C p p F ωπ2=Ω C s s F ωπ2=Ω3、IIR 数字滤波器的设计步骤:1)按一定规则将给出的数字滤波器的技术指标转换为模拟低通滤波器的技术指标。
2)根据转换后的技术指标设计模拟低通滤波器)(s G ;3)再按一定的规则将)(s G 转换成)(z H 。
4)若是高通、带通或带阻数字滤波器则将它们的技术指标先转化为低通模拟滤波器的技术指标,然后按上述步骤2)设计出低通)(s G ,再将)(s G 转换为所需的)(z H 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DSP 设计滤波器报告
姓名:张胜男 班级:07级电信(1)班 学号:078319120
一·低通滤波器的设计
(一)实验目的:掌握IIR 数字低通滤波器的设计方法。
(二)实验原理:
1、滤波器的分类
滤波器分两大类:经典滤波器和现代滤波器。
经典滤波器是假定输入信号)(n x 中的有用成分和希望取出的成分各自占有不同的频带。
这样,当)(n x 通过一个线性系统(即滤波器)后可讲欲去除的成分有效的去除。
现代滤波器理论研究的主要内容是从含有噪声的数据记录(又称时间序列)中估计出信号的某些特征或信号本身。
经典滤波器分为低通、高通、带通、带阻滤波器。
每一种又有模拟滤波器(AF )和数字滤波器(DF )。
对数字滤波器,又有IIR 滤波器和FIR 滤波器。
IIR DF 的转移函数是:
∑∑=-=-+==N
k k k M r r r
z a z b z X z Y z H 10
1)()()(
FIR DF 的转移函数是:
∑-=-=10)()(N n n
z n h z H
FIR 滤波器可以对给定的频率特性直接进行设计,而IIR 滤波器目前最通用的方法是利用已经很成熟的模拟滤波器的设计方法进行设计。
2、滤波器的技术要求
低通滤波器:
p ω:通带截止频率(又称通带上限频率) s ω:阻带下限截止频率 p α:通带允许的最大衰减 s α:阻带允许的最小衰减 (p α,s
α的单位dB ) p
Ω:通带上限角频率 s Ω:阻带下限角频率 (s p p T ω=Ω,s s s T ω=Ω)即 C p p F ωπ2=Ω C s s F ωπ2=Ω
3、IIR 数字滤波器的设计步骤:
1)按一定规则将给出的数字滤波器的技术指标转换魏模拟低通滤波器的技术指标。
2)根据转换后的技术指标设计模拟低通滤波器)(s G ;
3)再按一定的规则将)(s G 转换成)(z H 。
4)若是高通、带通或带阻数字滤波器则将它们的技术指标先转化为低通模拟滤波器的技术指标,然后按上述步骤2)设计出低通)(s G ,再将)(s G 转换为所需的)(z H 。
4.几种不同类型的滤波器的介绍:
因为我们设计的滤波器的冲击响应一般都为实数,所以有
2
*)()()()()(s j s j G s G s G s G s G Ω=-=Ω=
这样,如果我们能由
p α,p Ω,s α,s Ω求出2
)(Ωj G ,那么就容易得到所需要
的)(s G 。
不同类型的2)(Ωj G 的表达式,代表了几种不同类型的滤波器。
(1)巴特沃思(Butterworth)滤波器: n C j G )(11)(222
Ω+=Ω
C 为待定常数,N 为待定的滤波器阶次。
(2)切比雪夫I 型(Chebyshev – I )滤波器:
)(11
)(222Ω+=Ωn C j G ε
5.巴特沃思模拟低通滤波器的设计
由于每一个滤波器的频率范围将直接取决于设计者的应用目的,因此必然是千差万别。
为了使设计规范化,我们需要将滤波器的频率参数作归一化处理。
设所给的实际频率为Ω(或f ),归一化后的频率为λ,对低通模拟滤波器,令
λ=p ΩΩ/ 显然,1=p λ,p s s ΩΩ=/λ。
又令归一化复数变量为p ,λj p =,显然
p
p s j j p Ω=ΩΩ==//λ 所以巴特沃思模拟低通滤波器的设计可按以下三个步骤来进行。
(1)将实际频率Ω规一化
(2)求C 和N
11010/2-=P C α
s p s N λααlg 1101
10lg 10/10/--=
这样C 和N 可求。
若令p α=3dB ,则C =1,这样巴特沃思滤波器的设计就只剩一个参数N ,这时 N
p N j G 222)/(1111
)(ΩΩ+=+=λλ
(3)确定)(s G
因为λj p =,根据上面公式有
N N N p j p p G p G 22)1(11)/(11)()(-+=+=-
由 0)1(12=-+N N p 解得
)2212exp(πN N k j p k -+=,k =1,2, (2)
这样可得 1)212cos(21
)
)((1)(21+-+-=--=-+πN N k p p p p p p p G k N k k 求得)(p G 后,用p s Ω/代替变量p ,即得实际需要得)(s G 。
6.用双线性Z 变换法设计IIR 数字低通滤波器
s 平面到z 平面的映射关系
11
2+-=z z T s s 称为双线性Z 变换,由此关系求出
s T s
T z s s )2/(1)2/(1-+=
及 )2/cos()
2/sin(2ωωs T j j =Ω
即 )2/tan(2ωs T =
Ω
)2/arctan(2s T Ω=ω 因为设计滤波器时系数s T 2
会被约掉,所以又有
s s z -+=11 )2/tan(ω=Ω
Ω=arctan 2ω
(三)实验内容
题一:试用双线性Z 变换法设计一低通数字滤波器,给定技术指标是100=p f Hz ,300=s f Hz ,3=p αdB ,20=s α dB ,抽样频率1000=s F Hz 。
提示:首先应该得到角频率ω,然后再
(1) 将数字滤波器的技术要求转换为模拟滤波器的技术要求。
(2) 设计低通滤波器)(s G
由λ=p ΩΩ/依次求出p λ,s λ,再求出N ,可得)(p G 然后由p s
p p G s G Ω==)
()(转换成)(s G
(3) 由)(s G 求)(z H
源程序:
fp=100;
fs=300;
ap=3; %通带最大衰减
as=20; %阻带最小衰减
Fs1=1000; %抽样频率
wp=2*pi*fp/Fs1;
ws=2*pi*fs/Fs1; %数字角频率
Fs=Fs1/Fs1;
T=1/Fs;
Op=2/T*tan(wp/2);
Os=2/T*tan(ws/2); %角频率畸变
[N Wn]=buttord(Op,Os,ap,as,'s');
[z p k]=buttap(N); %G(p)的零点,极点,增益
[b a]=zp2tf(z,p,k); %G(p)的分子、分数系数
[B A]=lp2lp(b,a,Op); %H(s)的分子、分数系数
[Bz Az]=bilinear(B,A,Fs*T/2); %H(z)的分子、分数系数
[H w]=freqz(Bz,Az,256,Fs*Fs1); %H
plot(w,abs(H),'r');
title('低通滤波器');
grid on;
实验结果:
050100150200250300350400450500
00.2
0.4
0.6
0.8
1
1.2
低通滤波器
同理可以设计出低通滤波器和带通及带阻滤波器。
MATLAB 参考程序和仿真内容
%*******************************************************************%
function[x]=ffts(mode,M)
Nfft=2^M;
x=zeros(1,Nfft); %定义一个长度为Nfft 的一维全0数组
if mode= =1 for n=0:Nfft-1 x(n+1)=sin(2*pi*n/Nfft); end
end %定义一个长度为Nfft的单周期正弦序列
if mode= =2 for n=0:Nfft-1 x(n+1)=sin(4*pi*n/Nfft); end
end %定义一个长度为Nfft的双周期正弦序列
if mode= =3 for n=0:Nfft/2-1 x(n+1)=sin(4*pi*n/Nfft); end
end %定义一个长度为Nfft/2的正弦序列,后面一半为0序列。
if mode= =4 for n=0:Nfft-1 x(n+1)=square(2*pi*n/Nfft); end
end
if mode= =5 for n=0:Nfft-1 x(n+1)=square(2*pi*n/Nfft); end
end
if mode= =6 for n=0:Nfft/2-1 x(n+1)=square(4*pi*n/Nfft); end
end
n=0:Nfft-1;
subplot(2,1,1);
stem(n,x);
axis([0 Nfft-1 1.1*min(x) 1.1*max(x)]);
xlabel('Points-->');
ylabel('x(n)');
X=abs(fft(x,Nfft));
subplot(2,1,2);
stem(n,X);
axis([0 Nfft-1 1.1*min(X) 1.1*max(X)]);
xlabel('frequency-->');
ylabel('!X(k)!');
图二
图三。