设计数字低通滤波器(用matlab实现

合集下载

基于matlab数字图像处理之低通滤波器

基于matlab数字图像处理之低通滤波器

实践一:理想低通滤波器、Butterworth低通滤波器、高斯低通滤波器1.1.1理想低通滤波器实践代码:I=imread('couple.bmp');%I=rgb2gray(I);subplot(221),imshow(I);title('原图像');s=fftshift(fft2(I));subplot(223),imshow(abs(s),[]);title('图像傅里叶变换所得频谱');subplot(224),imshow(log(abs(s)),[]);title('图像傅里叶变换取对数所得频谱');[a,b]=size(s);a0=round(a/2);b0=round(b/2);d=10;for i=1:afor j=1:bdistance=sqrt((i-a0)^2+(j-b0)^2);if distance<=d h=1;else h=0;end;s(i,j)=h*s(i,j);end;end;s=uint8(real(ifft2(ifftshift(s))));subplot(222),imshow(s);title('低通滤波所得图像');I=imread('couple.bmp');Hd=ones(size(I));Hd(r>0.2)=0;figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');%画三维曲面(色)图1.1.2理想低通滤波器实践结果截图:1.2.1 Butterworth低通滤波器实践代码:clear all;I1=imread('girl.bmp');subplot(221),imshow(I1);xlabel('(a)原始图像');f=double(I1);%数据类型转换g=fft2(f);%图像傅里叶转换g=fftshift(g);%傅里叶变换平移F2=log(abs(g));%对傅里叶变换结果取绝对值,然后取对数subplot(222),imshow(F2,[],'InitialMagnification','fit');%将计算后的矩阵用图像表示colormap(jet);%设置色彩索引图colorbar %显示色彩索引条xlabel('(b)原始图像的傅里叶变换图像');[N1,N2]=size(g);%傅里叶变换图像尺寸n=2;%参数赋初始值d0=5;n1=fix(N1/2);%数据圆整n2=fix(N2/2);%数据圆整for i=1:N1 %遍历图像像素for j=1:N2d=sqrt((i-n1)^2+(j-n2)^2);if d==0h=0;elseh=1/(1+(d/d0)^(2*n));endresult(i,j)=h*g(i,j);% 图像矩阵计算处理endendF3=log(abs(result)); %对傅里叶变换结果取绝对值,然后取对数subplot(223),imshow(F3,'InitialMagnification','fit');colormap(jet);%设置色彩索引图colorbar %显示色彩索引条xlabel('(c)滤波后的傅里叶变换图像')result=ifftshift(result);X2=ifft2(result);X3=uint8(real(X2));subplot(224),imshow(X3)xlabel('(d)Butterworth低通滤波图像');I1=imread('couple.bmp');[f1,f2]=freqspace(size(I1),'meshgrid');D=0.3;r=f1.^2+f2.^2;n=4;for i=1:size(I1,1)for j=1:size(I1,2)t=r(i,j)/(D*D);Hd(i,j)=1/(t^n+1);endendsurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');% 画三维曲面(色)图1.2.2 Butterworth低通滤波器实践结果截图:1.3.1 高斯低通滤波器实践代码:IA=imread('girl.bmp');[f1,f2]=freqspace(size(IA),'meshgrid');D=100/size(IA,1);r=f1.^2+f2.^2;Hd=ones(size(IA));for i=1:size(IA,1)for j=1:size(IA,2)t=r(i,j)/(D*D);Hd(i,j)=exp(-t);endendY=fft2(double(IA));Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=real(ifft2(Ya));figuresubplot(2,2,1),imshow(uint8(IA));title('原图像');subplot(2,2,2),imshow(uint8(Ia));title('高斯低通滤波处理');figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong'); % 画三维曲面(色)图1.3.2 高斯低通滤波器实践结果截图:。

低通滤波matlab

低通滤波matlab

低通滤波matlab低通滤波是数字信号处理中常用的一种滤波方式。

其主要作用是去除高频分量,保留低频分量,从而使信号更加平滑。

Matlab提供了许多低通滤波函数,本文结合实例介绍了常用的几种。

一、FIR低通滤波FIR(Finite Impulse Response,有限冲激响应)低通滤波是数字信号处理中常用的滤波器之一。

它的设计方法是通过选择一组合适的滤波器系数来实现滤波的目的。

Matlab中提供了fir1函数用于设计FIR低通滤波器。

FIR滤波器的特点是具有线性相位,因此在滤波后不会改变信号的相位。

下面是一个例子,在Matlab中生成一个含有高频和低频分量的信号:```matlab t = linspace(0, 1, 1000); y =sin(2*pi*50*t) + sin(2*pi*500*t); ```可以看到,y信号中含有50Hz和500Hz两个频率分量。

接下来,我们使用fir1函数设计一个通带截止频率为200Hz的FIR低通滤波器,并将信号y通过该滤波器过滤掉高频分量,得到滤波后的信号:```matlab b = fir1(50, 200/(1000/2), 'low');y_filtered = filter(b, 1, y); ```fir1函数的第一个参数表示滤波器的阶数,第二个参数表示滤波器的通带截止频率,第三个参数表示滤波器的类型,这里选择低通滤波器。

filter函数用于将信号通过滤波器进行滤波,第一个参数表示滤波器系数,第二个参数表示单位脉冲响应,第三个参数表示待滤波信号。

最后,将原信号和滤波后的信号进行对比,可以看到滤波后的信号已经去除了500Hz的高频分量:```matlab plot(t, y); hold on; plot(t,y_filtered); hold off; legend('Original Signal','Filtered Signal'); ```二、IIR低通滤波IIR(Infinite Impulse Response,无限冲激响应)低通滤波是另一种常用的滤波器。

用Matlab设计的低通数字滤波器

用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的FIR和IIR数字滤波器的设计

基于MATLAB的FIR和IIR数字滤波器的设计

基于MATLAB的FIR和IIR数字滤波器的设计一、本文概述随着数字信号处理技术的飞速发展,数字滤波器作为其中的核心组件,已经广泛应用于通信、音频处理、图像处理、生物医学工程等诸多领域。

在数字滤波器中,有限脉冲响应(FIR)滤波器和无限脉冲响应(IIR)滤波器是最常见的两种类型。

它们各自具有独特的优点和适用场景,因此,对这两种滤波器的深入理解和设计掌握是工程师和研究人员必备的技能。

本文旨在通过MATLAB这一强大的工程计算工具,详细介绍FIR 和IIR数字滤波器的设计原理、实现方法以及对比分析。

我们将简要回顾数字滤波器的基本概念和分类,然后重点阐述FIR和IIR滤波器的设计理论,包括窗函数法、频率采样法、最小均方误差法等多种设计方法。

接下来,我们将通过MATLAB编程实现这些设计方法,并展示如何根据实际应用需求调整滤波器参数以达到最佳性能。

本文还将对FIR和IIR滤波器进行性能对比,分析它们在不同应用场景下的优缺点,并提供一些实用的设计建议。

我们将通过几个典型的应用案例,展示如何在MATLAB中灵活应用FIR和IIR滤波器解决实际问题。

通过阅读本文,读者将能够深入理解FIR和IIR数字滤波器的设计原理和实现方法,掌握MATLAB在数字滤波器设计中的应用技巧,为未来的工程实践和研究工作打下坚实的基础。

二、FIR滤波器设计有限脉冲响应(FIR)滤波器是一种数字滤波器,其特点是其脉冲响应在有限的时间后为零。

因此,FIR滤波器是非递归的,没有反馈路径,从而保证了系统的稳定性。

在设计FIR滤波器时,我们主要关注的是滤波器的阶数、截止频率和窗函数的选择。

在MATLAB中,有多种方法可以用来设计FIR滤波器。

其中,最常用的方法是使用fir1函数,该函数可以设计一个线性相位FIR滤波器。

该函数的基本语法是b = fir1(n, Wn),其中n是滤波器的阶数,Wn是归一化截止频率,以π为单位。

该函数返回一个长度为n+1的滤波器系数向量b。

数字滤波器的设计及其MATLAB实现

数字滤波器的设计及其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程序)

课程设计-低通滤波器设计(含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实现数字低通滤波器的设计

利用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低通数字滤波器设计

基于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实现)

设计数字低通滤波器(用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 。

matlab实验报告 IIR数字滤波器设计

matlab实验报告 IIR数字滤波器设计

实验报告姓名:李鹏博 实验名称: IIR 数字滤波器设计 学号:2011300704 课程名称: 数字信号处理 班级:03041102 实验室名称: 航海西楼303 组号: 1 实验日期: 2014.06.20一、实验目的、要求掌握IIR 数字滤波器设计的冲激响应不变法和双线性变换法。

掌握IIR 数字滤波器的计算机编程实现方法,即软件实现。

二、实验原理为了从模拟滤波器设计IIR 数字滤波器,必须先设计一个满足技术指标的模拟滤波器,然后将其数字化,即从s 平面映射到z 平面,得到所需的数字滤波器。

虽然IIR 数字滤波器的设计本质上并不取决于连续时间滤波器的设计,但是因为在许多应用中,数字滤波器就是用来模仿模拟滤波器功能的,所以由模拟滤波器转化为数字滤波器是很自然的。

因此,由模拟滤波器设计数字滤波器的方法准确、简便,是目前最普遍采用的方法。

三、实验环境PC 机,Windows XP ,office 2003,Matlab 软件。

四、实验过程、数据记录、分析及结论实验过程1.编程设计滤波器,用冲激响应不变法设计IIR 数字滤波器。

2.编程设计滤波器,用双线性变换法设计IIR 数字滤波器。

3.求脉冲响应、频率响应以及零极点。

4.编程滤波,求滤波器输出,完成对不同频率的多个正弦信号的滤波。

实验步骤根据所给定的技术指标进行指标转换。

112c c f πΩ=,222c c f πΩ=,112s s f πΩ=,222s s f πΩ=,21p c c B Ω==Ω-Ω,221222s s s s s B Ω-ΩΩΩ=Ω,3,18p s αα=-=-。

根据指标设计Butterworth 模拟低通滤波器。

调用函数[n,wn]=buttord(wp,ws,rp,rs,’s ’)确定阶次。

调用函数[zl,pl,kl]=buttap(n),求低通原型的模型。

调用函数[bl,al]=zp2tf(zl,pl,kl)实现模型转换。

基于MATLAB的数字滤波器的设计

基于MATLAB的数字滤波器的设计

基于MATLAB 的数字滤波器的设计1 引言数字滤波器是指完成信号滤波处理功能的,用有限精度算法实现的离散线性非时变系统,其输入是一组(由模拟信号取样和量化的)数字量,其输出是经过变换或说处理的另一组数字量。

数字滤波器具有稳定性高、精度高、灵活性大等突出优点。

这里所说的数字滤波器是指理想带通,低通等的频率选择数字滤波器。

数字滤波器设计的一个重要步骤是确定一个可实现的传输函数H(z),这个确定传输函数H(z)的过程称为数字滤波器设计。

数字滤波器的一般设计过程为:(1)按照实际需要,确定滤波器的性能要求(通常在频域内给定数字滤波的性能要求)。

(2)寻找一满足预定性能要求的离散时间线性系统。

(3)用有限精度的运算实现所设计的系统。

(4)通过模拟,验证所设计的系统是否符合给定性能要求。

2 数字滤波器的设计滤波器分为两种,分别为模拟滤波器和数字滤波器。

数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化的过程中,使信号按预定的形式变化。

数字滤波器有多种分类,从数字滤波器功能上分可分为低通、高通、带阻、带通滤波器,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应滤波器(IIR )和有限长冲激响应滤波器(FIR )。

数字滤波器指标:一般来说,滤波器的幅频特性是分段常数的,以低通为例,在通带内逼近于1,阻带内逼近与0,实际设计的滤波器并非是锐截止的通带和阻带两个范围,两者之间总有一个过渡带。

在设计滤波器时事先给定幅频特性允许误差,在通带范围内幅度响应以误差逼近于1,在阻带内幅1σ度响应以误差逼近于0。

2σ (1)πσσ≤≤≤≤≤≤-w w e H w w e H r jwc jw ,2|)(|,1|)(|11式中wc 和wr 分别为通带边界频率和阻带边界频率,wr-wc 为过渡带。

在具体的技术指标中往往用通带波动来表示,用最小阻带衰减At 来表示,其具体的对应公式这里就不详述了。

基于matlab的IIR数字滤波器设计

基于matlab的IIR数字滤波器设计

基于matlab的IIR数字滤波器设计一.IIR数字滤波器介绍1.IIR数字滤波器的根本原理所谓数字滤波器,是指输入,输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的相比照例或者滤除某些频率成分的硬件。

实质上就是一个由有限精度算法实现的线性时不变离散系统。

它的根本工作原理是利用离散系统的特性对系统输入信号进展加工和变换,改变输入序列的频谱或信号波形,让有用的频率分量通过,抑制无用的信号分量输出,因此数字滤波与模拟滤波的概念一样,根据其频率特性同样可以分为低通,高通,带通,带阻,只是信号的形式和实现滤波方式有所不同。

如果要处理的信号是模拟信号,就可以通过A/D或者D/A转换,在信号形式上进展匹配转换,同样可以使用数字滤波器对模拟信号进展滤波。

数字滤波器滤波的数学表达式:y〔n〕=x(n)*h(n); 如果滤波器的输入输出信号都是离散信号,那么该滤波器的脉冲响应也一定是离散信号,这样的滤波器就成为了数字滤波器。

上面的系统为时域离散系统时,其频域特性为:其中分别是数字滤波器的输出序列和输入序列的频域响应,是数字滤波器的频域响应。

可以看见按照输入信号的频谱特点和处理信号的目的适中选择滤波器的频域响应,使得滤波后的输出信号满足设计性能要求,就是滤波器的滤波原理。

2.IIR数字滤波器传输特性IIR数字滤波器的系统函数可以表示为:H(Z)=,式中H(Z)称为N阶IIR滤波器函数。

3..数字滤波器的技术要求.我们通常设计的数字滤波器一般属于选频滤波器,。

我们的目的是要设计一个因果可实现的滤波器,另外买也要考虑到本钱和复杂性问题,因此实用中通带和阻带都允许一定的误差容限,即通带不一定是完全水平的,阻带也不可能完全衰减到零。

而且,通带和阻带之间还要设置一定带宽的过渡带。

如如下图表示低通滤波器的技术要求:图中,分别表示通带截止频率和阻带截止频率,通带频率范围为0≤w≤,通带中要求〔1-δ1〕≤|H≤1,阻带截止频率范围≤w≤Π,再阻带中要求≤δ2,从p w 到s w 称为过渡带,在这个频带内,幅度响应从通带平滑的下落到阻带。

用MATLAB设计FIR数字滤波器

用MATLAB设计FIR数字滤波器

实验八 用MATLAB 设计FIR 数字滤波器(二)一、实验目旳:1、加深对窗函数法设计FIR 数字滤波器旳基本原理旳理解。

2、学习用MATLAB 语言旳窗函数法编写设计FIR 数字滤波器旳程序。

3、理解MATLAB 语言有关窗函数法设计FIR 数字滤波器旳常用函数用法。

二、实验原理:1、用窗函数法设计FIR 数字滤波器 FIR 数字滤波器旳系统函数为N-1-n n=0H(z)=h(n)z ∑这个公式也可以当作是离散LSI 系统旳系统函数M-m -1-2-mmm=0012m N -1-2-k-k12k k k=1bz b +b z +b z ++b z Y(z)b(z)H(z)====X(z)a(z)1+a z +a z ++a z1+a z ∑∑ 分母a 0为1,其他a k 全都为0时旳一种特例。

由于极点所有集中在零点,稳定和线性相位特性是FIR 滤波器旳突出长处,因此在实际中广泛使用。

FIR 滤波器旳设计任务是选择有限长度旳h(n),使传播函数H(e j ω)满足技术规定。

重要设计措施有窗函数法、频率采样法和切比雪夫等波纹逼近法等。

本实验重要简介窗函数法。

用窗函数法设计FIR 数字滤波器旳基本环节如下:(1)根据过渡带和阻带衰减指标选择窗函数旳类型,估算滤波器旳阶数N 。

(2)由数字滤波器旳抱负频率响应H(e j ω)求出其单位脉冲响应h d (n)。

可用自定义函数ideal_lp实现抱负数字低通滤波器单位脉冲响应旳求解。

程序清单如下:function hd=ideal_lp(wc,N) %点0到N-1之间旳抱负脉冲响应%wc=截止频率(弧度)%N=抱负滤波器旳长度tao=(N-1)/2;n=[0:(N-1)];m=n-tao+eps; %加一种小数以避免0作除数hd=sin(wc*m)./(pi*m);其他选频滤波器可以由低通频响特性合成。

如一种通带在ωc1~ωc2之间旳带通滤波器在给定N值旳条件下,可以用下列程序实现:Hd=ideal_lp(wc2,N)-ideal_lp(wc1,N)(3)计算数字滤波器旳单位冲激响应h(n)=w(n)h d(n)。

matlab设计低通滤波器

matlab设计低通滤波器

重庆邮电大学本科毕业设计(论文)摘要在当今的数字信息的世界里,数字信号处理已经演变成一门越来越重要的学科,并在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。

其中数字滤波是数字信号处理的重要内容。

数字滤波器可分为IIR和FIR两大类,对于IIR滤波器的设计来说主要有脉冲响应不变法和双线性变换法,而对于FIR数字滤波器的设计来说主要有窗函数法和频率采样设计法。

本文应用MATLBA对数字低通滤波器进行仿真,并给出一定频率的信号通过所设计的滤波器来验证滤波器的性能,主要的研究工作主要包括以下几方面的内容:(1)介绍IIR滤波器和FIR滤波器的结构特点并比较两者之间的差别。

(2)在MATLAB中应用双线性变换法和脉冲响应不变法设计IIR滤波器,给出了滤波器的频率特性图和相位特性图。

(3)通过编写MATLAB程序用窗函数设计法和频率采样法来完成FIR低通滤波器的设计,并给出几个不同频率的信号通过所设定的滤波器来验证滤波器的性能。

(4)在MATLAB中应用Simulink模块来仿真FIR低通滤波器,并在示波器上同时显示输入信号的频率和输出信号的频率,最后对结果进行分析。

【关键字】FIR滤波器IIR滤波器, 双线性变换法脉冲响应不变法窗函数法频率采样法MATLABABSTRACTIn nowadays world of digital information, digital signal processing has become an increasingly important subject, and has been widely applied in all fields, such as medicine, communications, and other areas, digital filters are important elements of digital signal processing. Digital filters can be divided into two kinds of IIR and FIR, IIR filter design for pulse response method and bilinear transformation method, for FIR digital filter design, the main Windows function method and frequency of sampling design.In this paper simulation using MATLAB for digital low-pass filter, and to give a signal of a certain frequency through the filters designed to verify the performance of filter, the main research work mainly includes the following content:(1) Describes the structure of FIR and IIR filters filter characteristics and comparison of the differences between the two.(2) In MATLAB using bilinear transformation method and impulse response method design of IIR filters, to out of the filters of frequency response and phase characteristics.(3) Design method by writing MATLAB programs use the windows function and frequency sampling method to accomplish the design of FIR low-pass filters, and gives several different frequency signals passes through a set of filters to verify that the filter's performance.(4) In the MATLAB Simulink simulation FIR low-pass filter module to the application, and also on the scope displays the frequency of the input signal and the output signal frequency, final analysis of the results.【Key words】FIR digital IIR digital filter Bilinear transformation methodImpulse response method Windows functionFrequency sampling method MATLAB目录前言 (1)第一章数字滤波器 (2)第一节数字滤波器的简介 (2)第二节数字滤波器的应用 (3)第三节数字滤波器的实现方法分析及优点 (4)第四节MATLAB和Simulink简介 (5)第五节本章小结 (7)第二章数字滤波器的结构和设计原理 (8)第一节数字滤波器的基本结构 (8)一、IIR滤波器的基本结构 (8)二、FIR滤波器的基本结构 (10)第二节数字滤波器的设计原理 (12)一、滤波器的设计步奏 (12)二、滤波器的性能指标 (13)第三节IIR滤波器与FIR滤波器的分析比较 (13)第四节本章小结 (15)第三章IIR滤波器的设计 (16)第一节脉冲响应不变法的基本原理 (16)一、变化原理 (16)二、混叠失真 (16)三、主要特点 (17)四、MATLAB(脉冲响应不变法)设计滤波器 (18)第二节双线性不变法的基本原理 (19)一、变换原理 (19)二、主要优缺点 (19)三、MATLAB(双线性变化法)设计数字低通滤波器 (19)第三节本章小结 (21)第四章FIR滤波器的设计 (22)第一节线性相位FIR滤波器的特点 (22)第二节利用窗函数设计FIR低通滤波器 (24)一、窗函数的基本思想 (24)二、几种常用的窗函数 (24)第二节频率采样法设计FIR低通滤波器 (32)一、频率采样设计法的基本原理 (32)二、线性相位的约束 (32)三、逼近误差及其改进措施 (32)第三节FIR数字滤波器的优化设计 (35)第四节本章小结 (36)第五章仿真结果及分析 (37)第一节MATLAB(窗函数法)设计FIR数字低通滤波器 (37)第二节MATLAB(频率采样法)设计FIR数字低通滤波器 (39)第三节Simulink仿真FIR滤波器 (42)第四节本章小结 (44)结论 (45)致谢 (46)参考文献 (46)附录 (47)一、英文原文 (48)二、英文翻译 (55)三、仿真脚本 (62)重庆邮电大学本科毕业设计(论文)前言模拟滤波器与数字滤波器的设计对工程,应用数学及计算机科学都是非常重要的。

汉宁窗的matlab实现

汉宁窗的matlab实现

数字信号处理课程设计题目:用汉宁窗设计FIR数字低通滤波器对给定数据进行滤波院系:专业:通信工程班级:学号:—姓名:指导教师:职称:1.1 FIR滤波器:有限长单位脉冲响应数字滤波器(Finite Impulse Response Digital Filter,缩写FIRDF):有限长单位冲激响应滤波器,是数字信号处理系统中最基本的元件,最大优点是可以实现线性相性滤波,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。

因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。

FIR滤波器的设计方法主要分为两类:第一类是基于逼近理想滤波器器特性的方法包括窗函数法、频率采样法、和等波纹最佳逼近法;第二类是最优设计法。

设FIRDF的单位脉冲响应h(n)的长度为N,则其频率响应函数为N 二H (e j )二為h(n)eT n( 1-1)一般将H(e j)表示成如下形式:H(e j )二H g( )e门) (1-2) 式中,Hgj)是••的实函数(可以去负值)。

与前面的表示形式,即H (e jK)) = H g伸)e曲®相比,Hg(co)与国不同。

日仲)与④伸)不HgCJ为幅频特性函数,称*•)为相频特性函数。

第一类线性相位FIRDF的相位特性函数是■的严格线性函数:■ ■- - ' ■■( 1-3)第二类线性相位FIRDF的相位特性函数如下:-…0 - ■(1-4)式中,•是常数,厲是起始相位。

入在信号处理中很有实用价值(如希伯尔特变换器),这是FIRDF除了线性相位滤波外,还具有真正交变换作用。

1.2窗函数设计法:窗函数设计法的基本思想是用FIRDF逼近希望的滤波特性。

设希望逼近的滤波器的频率响应为H d e「,其单位脉冲响应用h d n表示。

为了设计简单方便,通常选择H d e j■-为具有片段常数特性的理想滤波器。

matlab低通滤波器设计

matlab低通滤波器设计

matlab低通滤波器设计
matlab低通滤波器设计:
1、使用matlab设计低通滤波器的方法
(1) 首先根据低通滤波器的频率响应要求,计算滤波器构成要素的参数;
(2) 确定滤波器所要采用的元件模型,选择常用的元件模型;
(3) 使用matlab构筑出低通滤波器的模型和原理图;
(4) 根据原理图推导出滤波器的传递函数,使用matlab计算滤波器的频率响应,绘制出滤波器的频率响应曲线;
(5) 分析滤波器的传递特性,观察是否符合要求,如果不符合要求,可以调整模型的参数,重新计算滤波器的频率响应,直到满足频率响应要求为止。

2、使用matlab构件低通滤波器所需要的工具
(1) matlab控制环境,用于控制滤波器的构筑和参数的设定;
(2) Matlab编程工具,用于实现计算滤波器构件的算法;
(3) Matlab图形操作工具,用于绘制滤波器的理论响应曲线;
(4) Matlab仿真工具,用于检查滤波器的理论分析结果。

3、低通滤波器的优势
(1) 低通滤波器对频率低于截止频率的信号又较低的衰减率,因此保证低频信号的精度;
(2) 滤波器设计简单,而且可以采用大量元件来实现;
(3) 低通滤波器的频率响应特性主要取决于滤波器的电路结构,使用matlab设计的低通滤波器可以很容易的设定符合自己要求的参数。

用MATLAB设计数字FIR低通滤波器(哈明窗)

用MATLAB设计数字FIR低通滤波器(哈明窗)

用MATLAB设计数字FIR低通滤波器(哈明窗)设计数字FIR低通滤波器,技术指标如下:Wp=0.2pi.rp=0.25db;Ws=0.3pi,as=50db.求解,如下图:程序:wp=0.2*pi;ws=0.3*pi;trwidth=ws-wp;M=ceil(6.6*pi/trwidth)+1;%朝正无穷方向取整n=[0:1:M-1];wc=(ws+wp)/2%求的截止频率(弧度)hd=ideal_lp(wc,M) %调用计算理想低通滤波器的单位取样响应wham=(hamming(M))';%哈明窗函数h=hd.*wham;[H,w]=freqz(h,1,1000,'whole'); %求Z变换频率响应函数H=(H(1:1:501))';w=(w(1:1:501))'mag=abs(H);db=20*log10((mag+eps)/max(mag));pha=angle(H);grd=grpdelay(h,1,w);deltaw=2*pi/1000;Rp=-(min(db(1:1:wp/deltaw+1)))As=-round(max(db(ws/deltaw+1:1:501)))subplot(1,1,1)subplot(2,2,1),stem(n,hd);title('理想脉冲响应')axis([0 M-1 -0.1 0.3]);xlabel('N');ylabel('hd(n)');subplot(2,2,2),stem(n,wham);title('Hamming窗')axis([0 M-1 -0 1.1]);xlabel('N');ylabel('w(n)');subplot(2,2,3),stem(n,h);title('实际脉冲响应')axis([0 M-1 -0.1 0.3]);xlabel('N');ylabel('h(n)');subplot(2,2,4),plot(w/pi,db);title('相对标尺的幅度响应');grid on;axis([0 1 -100 10]);xlabel('frequency in pi units');ylabel('decibels');set(gca,'XTickMode','manual','XTick',[0,0.2,0.3,1])%设置或修改LTI对象的属性值set(gca,'XTickMode','manual','XTick',[-50,0])set(gca,'XTickLabelMode','manual','XTickLabels',['50';'0'])子程序:function hd=ideal_lp(wc,N);a=(N-1)/2;n=[0:1:(N-1)];m=n-a+eps;hd=sin(wc*m)./(pi*m);。

matlab设计iir低通滤波器代码

matlab设计iir低通滤波器代码

Matlab是一种强大的数学计算工具,广泛用于工程、科学和技术领域。

IIR(Infinite Impulse Response)滤波器是一种数字信号处理中常用的滤波器,可用于信号去噪、数据平滑等应用。

本文将介绍如何使用Matlab设计一个IIR低通滤波器的代码,以便读者能够了解IIR滤波器的原理和在Matlab中的实现方式。

IIR低通滤波器是一种将高频信号滤除,只保留低频信号的滤波器。

在数字信号处理中,我们经常需要对信号进行平滑处理或者去除噪音,这时就需要用到低通滤波器。

IIR低通滤波器相比于FIR(Finite Impulse Response)滤波器,具有更窄的过渡带和更好的通带纹波特性,在某些应用场景下具有更好的性能。

设计IIR低通滤波器的代码步骤如下:1. 定义滤波器的参数在设计IIR低通滤波器之前,首先需要定义滤波器的参数,包括通带边界频率、阻带边界频率、通带纹波和阻带衰减等。

这些参数将决定最终滤波器的性能。

2. 调用Matlab工具箱函数设计滤波器Matlab提供了多种设计IIR滤波器的工具箱函数,如butter、cheby1、cheby2和ellip等。

用户可以根据需要选择相应的函数来设计滤波器。

以butter函数为例,其调用形式为:[b, a] = butter(n, Wn, 'low');其中,n表示滤波器的阶数,Wn为归一化的截止频率。

3. 绘制幅频特性曲线设计完滤波器之后,可以通过freqz函数绘制滤波器的幅频特性曲线,以便直观地了解滤波器的性能。

除了以上的代码步骤,还可以对滤波器进行参数优化、性能评估等工作。

设计IIR低通滤波器的代码并不复杂,但需要对滤波器的原理和Matlab编程有一定的了解。

在实际应用中,设计IIR低通滤波器的代码可以根据具体的需求进行定制,比如考虑信号的频率特性、噪声的特点等。

通过不断地调试和优化滤波器的参数,可以得到满足实际需求的滤波器设计方案。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2、滤波器的技术要求
低通滤波器: :通带截止频率(又称通带上限频率) :阻带下限截止频率
:通带允许的最大衰减 :阻带允许的最小衰减( , 的单位dB)
:通带上限角频率 :阻带下限角频率
( , )即
3、IIR 数字滤波器的设计步骤:
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);
DSP设计滤波器报告
姓名:张胜男 班级:07级电信(1)班 学号:078319120
一·低通滤波器的设计
(一)实验目的:掌握IIR数字低通滤波器的设计方法。
(二)实验原理:
1、滤波器的分类
滤波器分两大类:经典滤波器和现代滤波器。
经典滤波器是假定输入信号 中的有用成分和希望取出的成分各自占有不同的频带。这样,当 通过一个线性系统(即滤波器)后可讲欲去除的成分有效的去除。
求得 后,用 代替变量 ,即得实际需要得 。
6.用双线性Z变换法设计IIR数字低通滤波器
s平面到z平面的映射关系
称为双线性Z变换,由此关系求出


因为设计滤波器时系数 会被约掉,所以又有
(三)实验内容
题一:试用双线性Z变换法设计一低通数字滤波器,给定技术指标是 Hz, Hz, dB, dB,抽样频率 Hz。
现代滤波器理论研究的主要内容是从含有噪声的数据记录(又称时间序列)中估计出信号的某些特征或信号本身。
经典滤波器分为低通、高通、带通、带阻滤波器。每一种又有模拟滤波器(AF)和数字滤波器(DF)。对数字滤波器,又有IIR滤波器和FIR滤波器。
IIR DF 的转移函数是:
FIR DF的转移函数是:
FIR滤波器可以对给定的频率特性直接进行设计,而IIR滤波器目前最通用的方法是利用已经很成熟的模拟滤波器的设计方法进行设计。
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的双周期正弦序列
2)根据转换后的技术指标设计模拟低通滤波器 ;
3)再按一定的规则将 转换成 。
4)若是高通、带通或带阻数字滤波器则将它们的技术指标先转化为低通模拟滤波器的技术指标,然后按上述步骤2)设计出低通 ,再将 转换为所需的 。
4.几种不同类型的滤波器的介绍:
因为我们设计的滤波器的冲击响应一般都为实数,所以有
提示:首先应该得到角频率 ,然后再
(1)将数字滤波器的技术要求转换为模拟滤波器的技术要求。
(2)设计低通滤波器
由 = 依次求出 , ,再求出N,可得
然后由 转换成
(3)由 求
源程序:
fp=100;
fs=300;
ap=3;%通带最大衰减
as=20;%阻带最小衰减
Fs1=1000;%抽样频率
wp=2*pi*fp/Fs1;
实验结果:
同理可以设计出低通滤波器和带通及带阻滤波器。
MATLAB参考程序和仿真内容
%*******************************************************************%
function[x]=ffts(mode,M)
Nfft=2^M;
x=zeros(1,Nfft); %定义一个长度为Nfft的一维全0数组
ws=2*pi*fs/Fs1;%数字角频率
Fs=Fs1/Fs1;
T=1/Fs;
s/2);%角频率畸变
[N Wn]=buttord(Op,Os,ap,as,'s');
[z p k]=buttap(N);%G(p)的零点,极点,增益
[b a]=zp2tf(z,p,k);%G(p)的分子、分数系数
这样,如果我们能由 , , , 求出 ,那么就容易得到所需要的 。
不同类型的 的表达式,代表了几种不同类型的滤波器。
(1)巴特沃思(Butterworth)滤波器:
C为待定常数,N为待定的滤波器阶次。
(2)切比雪夫I型(Chebyshev – I )滤波器:
5.巴特沃思模拟低通滤波器的设计
由于每一个滤波器的频率范围将直接取决于设计者的应用目的,因此必然是千差万别。为了使设计规范化,我们需要将滤波器的频率参数作归一化处理。设所给的实际频率为 (或 ),归一化后的频率为 ,对低通模拟滤波器,令
[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;

显然, , 。又令归一化复数变量为 , ,显然
所以巴特沃思模拟低通滤波器的设计可按以下三个步骤来进行。
(1)将实际频率 规一化
(2)求C和N
这样C和N可求。
若令 =3dB,则C=1,这样巴特沃思滤波器的设计就只剩一个参数N,这时
(3)确定
因为 ,根据上面公式有
由 解得
, =1,2,···,2N
这样可得
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);
相关文档
最新文档