MATLAB窗函数法实现FIR的高通,带通和低通滤波器的程序
基于matlab窗函数的FIR带通滤波器设计
X l a b e l ( ’ f r e q u e n c y i n p i u n i t s ’ ) ; Y l a b d( 。 Ma g n i t u d e R e s p o n s e i n d b ’ ) ; s e t ( g c a , ’ X T i c k Mo d e ' , ' ma n u a l ' , ' X t i c k ’ , [ 0 , 0 . 2 , 0 . 3 5 , 0 . 6 5 , 0 . 8 , 1 1 ) s e t ( g c a , ’ Y T i e k Mo d e ’ , ’ ma J 1 u a l ’ , ’ Y t i c k ’ , [ - 6 0 , o ] ) 2 结 果 分 析
程序运算结果 : M =7 5 , R p= O . 0 0 2 8 , A s =7 5 , 运算结果 图如图 1 所 示。由图可知 , 7 5阶 布 莱 克 曼 窗 的最 小 阻带 衰 减 为 7 5 d b ( > 6 0 d b ) , 通带最大衰减 O . O 0 2 8 d b ( < < l d b ) , 符合设计题 目的技 术指标
口
:
:
限长 F I R( i f n i t e i m p u l s e r e s p o n s e ) 滤波 器 和 无 限 长 l i B( i n f i n i t e i m — p u l s e r e s p o n s e ) 滤波器 。F I R数字 滤波器幅频特性精 度 比 I I R低 , 且 滤波器所 需阶次 比较 高 , 但是 它拥有很好 的线性相位 特性 , 即不 同 昱 . 印 频率分量的信号经过 F I R滤波器后 其时间差 不变 。 MA T L A B是美 国 Ma t h Wo r k s 公司推 出 的一 套用 于工程计算 的可 视化高 性能语 言 与 软 件环境 , 是 数字信号处理技术 实现的重要手段 。本 文采用 M A T _ L A B窗 函数法实现 F I R数字滤波器的设计 。 至 1程序设计及运行结果 I 根 据研究任务 , 需设计 带通数字滤 波器 的性 能指标如 下 : 低通 阻带边界频 率 : w s l = 0 . 2 * p i , 高端阻带边界频率 : w s 2 = 0 . 8 p i ; 阻带最小 口 衰减: A s = 6 0 d b 。低端通带边 界频率 : w p l = 0 . 3 5 " p i , 高端 通带边界 频 率: w p 2 = 0 . 6 5 " p i ; 通带最大衰减 :R p = l a b 。 根 据窗 函数最小 阻带衰减 的特性 表[ 2 1 , 可采用布莱 克曼 窗提供 大于6 0 d B的衰减 。设 计程序如下 : p l o t ( w / p i , d b ) ; d ; %数字滤波器的参数
使用MATLAB设计FIR滤波器
使⽤MATLAB设计FIR滤波器1. 采⽤fir1函数设计,fir1函数可以设计低通、带通、⾼通、带阻等多种类型的具有严格线性相位特性的FIR滤波器。
语法形式:b = fir1(n, wn)b = fir1(n, wn, ‘ftype’)b = fir1(n, wn, ‘ftype’, window)b = fir1(n, wn, ‘ftype’, window, ‘noscale’)参数的意义及作⽤:b:返回的FIR滤波器单位脉冲响应,脉冲响应为偶对称,长度为n+1;n:滤波器的介数;wn:滤波器的截⽌频率,取值范围为0<wn<1,1对应信号采样频率⼀半。
如果wn是单个数值,且ftype参数为low,则表⽰设计截⽌频率为wn的低通滤波器,如果ftype参数为high,则表⽰设计截⽌频率为wn的⾼通滤波器;如果wn是有两个数组成的向量[wn1wn2],ftype为stop,则表⽰设计带阻滤波器,ftype为bandpass,则表⽰设计带通滤波器;如果wn是由多个数组成的向量,则根据ftype的值设计多个通带或阻带范围的滤波器,ftype为DC-1,表⽰设计的第⼀个频带为通带,ftype为DC-0,表⽰设计的第⼀个频带为阻带;window:指定使⽤的窗函数,默认为海明窗;noscale:指定是否归⼀化滤波器的幅度。
⽰例:N=41; %滤波器长度fs=2000; %采样频率%各种滤波器的特征频率fc_lpf=200;fc_hpf=200;fp_bandpass=[200 400];fc_stop=[200 400];%以采样频率的⼀半,对频率进⾏归⼀化处理wn_lpf=fc_lpf*2/fs;wn_hpf=fc_hpf*2/fs;wn_bandpass=fp_bandpass*2/fs;wn_stop=fc_stop*2/fs;%采⽤fir1函数设计FIR滤波器b_lpf=fir1(N-1,wn_lpf);b_hpf=fir1(N-1,wn_hpf,'high');b_bandpass=fir1(N-1,wn_bandpass,'bandpass');b_stop=fir1(N-1,wn_stop,'stop');%求滤波器的幅频响应m_lpf=20*log(abs(fft(b_lpf)))/log(10);m_hpf=20*log(abs(fft(b_hpf)))/log(10);m_bandpass=20*log(abs(fft(b_bandpass)))/log(10);m_stop=20*log(abs(fft(b_stop)))/log(10);%设置幅频响应的横坐标单位为Hzx_f=0:(fs/length(m_lpf)):fs/2;%绘制单位脉冲响应%绘制单位脉冲响应subplot(421);stem(b_lpf);xlabel('n');ylabel('h(n)');subplot(423);stem(b_hpf);xlabel('n');ylabel('h(n)');subplot(425);stem(b_bandpass);xlabel('n');ylabel('h(n)');subplot(427);stem(b_stop);xlabel('n');ylabel('h(n)');%绘制幅频响应曲线subplot(422);plot(x_f,m_lpf(1:length(x_f)));xlabel('频率(Hz)','fontsize',8);ylabel('幅度(dB)','fontsize',8);subplot(424);plot(x_f,m_hpf(1:length(x_f)));xlabel('频率(Hz)','fontsize',8);ylabel('幅度(dB)','fontsize',8);subplot(426);plot(x_f,m_bandpass(1:length(x_f)));xlabel('频率(Hz)','fontsize',8);ylabel('幅度(dB)','fontsize',8);subplot(428);plot(x_f,m_stop(1:length(x_f)));xlabel('频率(Hz)','fontsize',8);ylabel('幅度(dB)','fontsize',8);2. 采⽤fir2函数设计,函数算法是:⾸先根据要求的幅频响应向量形式进⾏插值,然后进⾏傅⾥叶变换得到理想滤波器的单位脉冲响应,最后利⽤窗函数对理想滤波器的单位脉冲响应激进型截断处理,由此得到FIR滤波器系数。
实验3 用MATLAB窗函数法设计FIR滤波器
实验10 用MATLAB 窗函数法设计FIR 滤波器一、实验目的㈠、学习用MA TLAB 语言窗函数法编写简单的FIR 数字滤波器设计程序。
㈡、实现设计的FIR 数字滤波器,对信号进行实时处理。
二、实验原理㈠、运用窗函数法设计FIR 数字滤波器与IIR 滤波器相比,FIR 滤波器在保证幅度特性满足技术要求的同时,很容易做到有严格的线性相位特性。
设FIR 滤波器单位脉冲响应)(n h 长度为N ,其系统函数)(z H 为∑-=-=10)()(N n n zn h z H)(z H 是1-z 的)1(-N 次多项式,它在z 平面上有)1(-N 个零点,原点0=z 是)1(-N 阶重极点。
因此,)(z H 永远是稳定的。
稳定和线性相位特性是FIR 滤波器突出的优点。
FIR 滤波器的设计任务是选择有限长度的)(n h ,使传输函数)(ωj e H 满足技术要求。
主要设计方法有窗函数法、频率采样法和切比雪夫等波纹逼近法。
本实验主要介绍用窗函数法设计FIR 数字滤波器。
图7-10-1 例1 带通FIR 滤波器特性㈡、 用MATLAB 语言设计FIR 数字滤波器例1:设计一个24阶FIR 带通滤波器,通带为0.35<ω<0.65。
其程序如下b=fir1(48,[0.35 0.65]);freqz(b,1,512)可得到如图7-10-1 所示的带通FIR滤波器特性。
由程序可知,该滤波器采用了缺省的Hamming窗。
例2:设计一个34阶的高通FIR滤波器,截止频率为0.48,并使用具有30dB波纹的Chebyshev窗。
其程序如下Window=chebwin(35,30);b=fir1(34,0.48,'high',Window);freqz(b,1,512)可得到如图7-10-2 所示的高通FIR滤波器特性。
图7-10-2 例2 高通FIR滤波器特性例3:设计一个30阶的低通FIR滤波器,使之与期望频率特性相近,其程序如下 f=[0 0.6 0.6 1];m=[1 1 0 0];b=fir2(30,f,m);[h,w]=freqz(b,1,128);plot(f,m,w/pi,abs(h))结果如图7-10-3所示。
用MATLAB结合窗函数法设计数字带通FIR滤波器
武汉理工大学《Matlab课程设计》报告目录摘要 (I)Abstract (II)1 原理说明 (1)1.1 数字滤波技术 (1)1.2 FIR滤波器 (1)1.3 窗函数 (2)1.4 MATLAB简介 (4)1.5 MATLAB结合窗函数设计法原理 (4)2 滤波器设计 (2)2.1 滤波器设计要求 (2)2.2 设计函数的选取 (2)2.3 窗函数构造 (3)2.4 设计步骤 (4)2.5 利用MATLAB自带函数设计 (4)3 滤波器测试 (9)3.1 滤波器滤波性能测试 (9)3.2 滤波器时延测量................................................................................错误!未定义书签。
3.3 滤波器稳定性测量............................................................................错误!未定义书签。
5 参考文献 (12)附件一: ........................................................................................................ 错误!未定义书签。
摘要现代图像、语声、数据通信对线性相位的要求是普遍的。
数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。
根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。
与IIR滤波器相比,FIR的实现是非递归的,总是稳定的;更重要的是,FIR滤波器在满足幅频响应要求的同时,可以获得严格的线性相位特性。
因此,具有线性相位的FIR数字滤波器在高保真的信号处理,如数字音频、图像处理、数据传输、生物医学等领域得到广泛应用。
完整word版,MATLAB窗函数法实现FIR的高通,带通和低通滤波器的程序要点
MATLAB课程设计报告学院:地球物理与石油资源学院班级:测井(基)11001姓名:大牛啊啊啊学号:班内编号:指导教师:陈义群完成日期: 2013年6月3日一、 题目 FIR 滤波器的窗函数设计法及性能比较1. FIR 滤波器简介数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。
根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应(IIR )滤波器和有限冲激响应(FIR )滤波器。
与IIR 滤波器相比,FIR 滤波器的主要特点为: a. 线性相位;b.非递归运算。
2. FIR 滤波器的设计FIR 滤波器的设计方法主要有三种:a.窗函数设计法;b.频率抽样发;c.最小平法抽样法; 这里我主要讨论在MA TLAB 环境下通过调用信号分析与处理工具箱的几类窗函数来设计滤波器并分析与比较其性能。
窗函数法设计FIR 滤波器的一般步骤如下:a. 根据实际问题确定要设计的滤波器类型;b. 根据给定的技术指标,确定期望滤波器的理想频率特性;c. 求期望滤波器的单位脉冲响应;d. 求数字滤波器的单位脉冲响应;e. 应用。
常用的窗函数有同。
时与布莱克曼窗结果相当时与海明窗结果相同;时与矩形窗一致;当当885.84414.50]!)2/([1)(120===+=∑∞=x x x m x x I m m3.窗函数的选择标准1. 较低的旁瓣幅度,尤其是第一旁瓣;2. 旁瓣幅度要下降得快,以利于增加阻带衰减;3. 主瓣宽度要窄,这样滤波器过渡带较窄。
函数,可定义为是零阶式中Bessel x I n R I N n I n w windowKaiser n R N n N n n w windowBalckman n R N n n w windowHamming n R N n n w windowHanning N N N N )()5.2.9()(])(})]1/(2[1{[)()4()4.2.9()()]14cos(08.0)12cos(5.042.0[)()3()3.2.9()()]12cos(46.054.0[)()2()2.2.9()()]1cos(5.05.0[)()1(0020ββππππ--=-+--=--=--=4. 常用窗函数的参数5.FIR滤波器的MATLAB实现方式在MATLAB信号分析与处理工具箱中提供了大量FIR窗函数的设计函数,本次用到主要有以下几种:hanning(N) hanning窗函数的调用hamming(N) hamming窗函数的调用blackman(N) blackman窗函数的调用kaiser(n+1,beta) kaiser窗函数的调用kaiserord 计算kaiser窗函数的相关参数freqz 求取频率响应filter 对信号进行滤波的函数6.实验具体步骤本次实验分别通过调用hanning ,hamming ,Blackman,kaiser窗函数,给以相同的技术参数,来设计低通,带通,高通滤波器,用上述窗函数的选择标准来比较各种窗函数的优劣,并给以一个简谐波进行滤波处理,比较滤波前后的效果。
基于matlab的FIR低通,高通,带通,带阻滤波器设计
北京师范大学课程设计报告课程名称: DSP设计名称:FIR 低通、高通带通和带阻数字滤波器的设计姓名:学号:班级:指导教师:起止日期:课程设计任务书学生班级: 学生姓名: 学号:设计名称: FIR 低通、高通带通和带阻数字滤波器的设计 起止日期: 指导教师:设计目标:1、采用Kaiser 窗设计一个低通FIR 滤波器 要求:采样频率为8kHz ;通带:0Hz~1kHz ,带内波动小于5%; 阻带:1.5kHz ,带内最小衰减:Rs=40dB 。
2、采用hamming 窗设计一个高通FIR 滤波器 要求:通带截至频率wp=rad π6.0, 阻带截止频率ws=rad π4.0,通带最大衰减dB p 25.0=α,阻带最小衰减dB s 50=α3、采用hamming 设计一个带通滤波器低端阻带截止频率 wls = 0.2*pi ;低端通带截止频率 wlp = 0.35*pi ; 高端通带截止频率 whp = 0.65*pi ; 高端阻带截止频率 whs = 0.8*pi ;4、采用Hamming 窗设计一个带阻FIR 滤波器 要求:通带:0.35pi~0.65pi ,带内最小衰减Rs=50dB ; 阻带:0~0.2pi 和0.8pi~pi ,带内最大衰减:Rp=1dB 。
FIR 低通、高通带通和带阻数字滤波器的设计 一、 设计目的和意义1、熟练掌握使用窗函数的设计滤波器的方法,学会设计低通、带通、带阻滤波器。
2、通过对滤波器的设计,了解几种窗函数的性能,学会针对不同的指标选择不同的窗函数。
二、 设计原理一般,设计线性相位FIR 数字滤波器采用窗函数法或频率抽样法,本设计采用窗函数法,分别采用海明窗和凯泽窗设计带通、带阻和低通。
如果所希望的滤波器的理想频率响应函数为)(jw d e H ,如理想的低通,由信号系统的知识知道,在时域系统的冲击响应h d (n)将是无限长的,如图2、图3所示。
H d (w)-w c w c图2图3若时域响应是无限长的,则不可能实现,因此需要对其截断,即设计一个FIR 滤波器频率响应∑-=-=10)()(N n jwn jwe n h e H 来逼近)(jw d e H ,即用一个窗函数w(n)来截断h d (n),如式3所示:)()()(n w n h n h d =(式1)。
matlab用布莱克曼窗设计fir滤波器代码
matlab用布莱克曼窗设计fir滤波器代码如何使用Matlab设计带有布莱克曼窗的FIR滤波器。
布莱克曼窗是一种用于设计数字滤波器的常见窗函数之一。
它具有非常好的频域特性,可以用于实现各种滤波器,比如低通、高通、带通、带阻等。
在本文中,我们将详细介绍如何使用Matlab来设计带有布莱克曼窗的FIR 滤波器。
步骤1:确定设计规格在设计FIR滤波器之前,我们首先需要确定滤波器的一些规格,如滤波器的类型(低通、高通等)、截止频率、阶数等。
这些规格将决定最终滤波器的性能。
假设我们要设计一个低通滤波器,截止频率为0.2,阶数为50。
步骤2:计算滤波器系数使用Matlab的fir1函数可以计算出FIR滤波器的系数。
该函数的使用语法如下:h = fir1(N, Wn, window)其中,N表示滤波器的阶数,Wn表示归一化的截止频率,window表示所采用的窗函数。
对于布莱克曼窗,我们可以使用matlab中的blackman函数来生成窗函数:window = blackman(N+1)在这里,我们需要注意一个细节:由于Matlab的fir1函数使用的是双边频率表示法,而我们通常使用的是单边频率表示法。
因此,我们需要将截止频率进行一些处理,将其从正常范围[0, 0.5]映射到[-0.5, 0.5]上。
Wn = 2 * 0.2完成上述计算后,我们可以编写Matlab代码如下:N = 50;Wn = 2 * 0.2;window = blackman(N+1);h = fir1(N, Wn, window);步骤3:绘制滤波器的频率响应为了验证我们设计的滤波器效果,我们可以绘制其频率响应。
使用freqz 函数可以绘制滤波器的幅频特性:freqz(h,1)上述代码将绘制出滤波器的振幅响应和相位响应。
步骤4:应用滤波器完成滤波器的设计后,我们可以将其应用于信号上。
假设我们有一个需要滤波的信号x,我们可以使用filter函数实现滤波效果:y = filter(h, 1, x)其中,x表示输入信号,y表示输出信号。
Matlab技术滤波器设计方法
Matlab技术滤波器设计方法引言:滤波器在信号处理中起到了至关重要的作用,广泛应用于音频处理、图像处理、通信系统等领域。
Matlab是一款功能强大的数学软件,为我们提供了丰富的工具和函数来进行滤波器设计和分析。
本文将介绍几种常用的Matlab技术滤波器设计方法,并探讨它们的优缺点及适用范围。
一、FIR滤波器设计FIR(Finite Impulse Response)滤波器是一种常见且重要的数字滤波器。
它的设计基于一组有限长度的冲激响应。
Matlab提供了多种设计FIR滤波器的函数,例如fir1、fir2和firpm等。
其中,fir1函数采用窗函数的方法设计低通、高通、带通和带阻滤波器。
在使用fir1函数时,我们需要指定滤波器的阶数和截止频率。
阶数的选择直接影响了滤波器的性能,阶数越高,滤波器的频率响应越陡峭。
截止频率用于控制滤波器的通带或阻带频率范围。
FIR滤波器的优点是相对简单易用,具有线性相位特性,不会引入相位失真。
然而,FIR滤波器的计算复杂度较高,对阶数的选择也需要一定的经验和调试。
二、IIR滤波器设计IIR(Infinite Impulse Response)滤波器是另一种常见的数字滤波器。
与FIR滤波器不同,IIR滤波器的冲激响应为无限长,可以实现更复杂的频率响应。
Matlab提供了多种设计IIR滤波器的函数,例如butter、cheby1和ellip等。
这些函数基于不同的设计方法,如巴特沃斯(Butterworth)设计、切比雪夫(Chebyshev)设计和椭圆(Elliptic)设计。
使用这些函数时,我们需要指定滤波器的类型、阶数和截止频率等参数。
与FIR滤波器类似,阶数的选择影响滤波器的性能,而截止频率用于控制通带或阻带的频率范围。
相比于FIR滤波器,IIR滤波器具有更低的计算复杂度,尤其在高阶滤波器的设计中表现出更好的性能。
然而,IIR滤波器的非线性相位特性可能引入相位失真,并且不易以线性常态方式实现。
数字信号处理实验matlab实验fir滤波器实现
实验四 用窗函数法设计FIR 滤波器一、实验目的1、熟悉FIR 滤波器设计的基本方法。
2、掌握用户窗函数设计FIR 数字滤波器的原理及方法,熟悉相应的计算机高级语言编程。
3、熟悉线性相位FIR 滤波器的幅频特性和相位特性。
4、了解各种不同窗函数对滤波器性能的响应。
二、实验原理和方法(一)FIR 滤波器的设计FIR 滤波器具有严格的相位特性,这对于语音信号处理和数据传输是很重要的。
目前FIR 滤波器的设计方法主要有三种:窗函数法、频率取样法和切比雪夫等波纹逼近的最优化设计方法。
本实验中的窗函数法比较简单,可应用现成的窗函数公式,在技术指标要求不高的时候是比较灵活方便的。
它是从时域出发,用一个窗函数截取一个理想的)(n h d 得到h(n),以有限长序列h(n)近似理想的)(n h d :如果从频域出发,用理想的)(jw d e h 在单位圆上等角度取样得到H (k ),根据h(k)得到H(z)将逼近理想的)(z H d 这就是频率取样法。
(二)窗函数设计法同其它的的数字滤波器设计的方法一样,用窗函数设计滤波器也是首先要对滤波器提出性能指标。
一般是给定一个理想的频率响应)(jw d e h ,使所设计的FIR 滤波器的频率响应)(jw e h 去逼近所要求的理想的滤波器的响应)(jw d e h 窗函数设计的任务在于寻找一个可实现(有限长单位脉冲响应)的传递函数。
∑-=-=10)()(N n jw jwn e n h e H 去逼近)(jw d e h 。
我们知道,一个理想的频率响应)(jw d e h 的傅里叶变换⎰=ππ20)(21)(dw e e H n h jwn jw d d 所得到的理想的单位脉冲响应)(n h d 往往是一个无限长序列,对)(n h d 经过适当的加权、截取处理才得到一个所需要的有限长脉冲响应序列。
对应不同的加权、截断,就有不同的窗函数。
所要寻找的滤波器脉冲响应就等于理想脉冲响应和窗函数的乘积。
matlab 信号过fir数字滤波器设计
一、概述Matlab 是一种用于算法开发、数据分析和可视化的高级技术计算语言和交互式环境。
在信号处理领域,Matlab 是一种非常强大的工具,可以用来设计和实现数字滤波器。
本文将重点介绍如何使用 Matlab 过FIR (Finite Impulse Response) 数字滤波器设计。
二、FIR 数字滤波器概述FIR 数字滤波器是一种常见的数字滤波器,它的特点是其单位脉冲响应有限,并且没有反馈。
FIR 滤波器的频率响应可以通过其线性相位特性来描述,因此在许多应用中非常有用。
三、Matlab 中的 FIR 数字滤波器设计工具Matlab 中提供了许多用于数字滤波器设计的工具,其中包括 fdatool 和 fir1 函数。
1. fdatoolfdatool 是 Matlab 中的一个交互式工具,可以帮助用户设计各种类型的数字滤波器。
用户可以通过图形界面选择滤波器类型、滤波器阶数、截止频率等参数,并实时查看滤波器的频率响应和单位脉冲响应。
使用 fdatool 可以快速方便地设计出所需的 FIR 数字滤波器。
2. fir1 函数fir1 函数是 Matlab 中用于设计标准的低通、高通、带通和带阻 FIR数字滤波器的函数。
用户可以通过指定滤波器类型、截止频率、滤波器阶数等参数来调用 fir1 函数,从而得到所需的数字滤波器的系数。
四、利用 Matlab 设计 FIR 数字滤波器的步骤1. 确定滤波器类型首先要确定所需的数字滤波器的类型,包括低通滤波器、高通滤波器、带通滤波器和带阻滤波器。
2. 确定滤波器的频率特性根据具体的应用需求,确定滤波器的截止频率、通带和阻带的大小,以及过渡带的宽度等参数。
3. 计算滤波器的系数根据所需的滤波器类型、频率特性和滤波器阶数等参数,使用 fdaool 工具或 fir1 函数计算出滤波器的系数。
4. 应用滤波器将得到的滤波器系数应用到需要滤波的信号上,即可得到滤波后的信号。
用MATLAB结合窗函数法设计数字带通FIR滤波器解析
武汉理工大学《Matlab课程设计》报告目录摘要 (I)Abstract (II)1 原理说明 (1)1.1 数字滤波技术 (1)1.2 FIR滤波器 (1)1.3 窗函数 (2)1.4 MATLAB简介 (4)1.5 MATLAB结合窗函数设计法原理 (4)2 滤波器设计 (2)2.1 滤波器设计要求 (2)2.2 设计函数的选取 (2)2.3 窗函数构造 (3)2.4 设计步骤 (4)2.5 利用MATLAB自带函数设计 (4)3 滤波器测试 (9)3.1 滤波器滤波性能测试 (9)3.2 滤波器时延测量............................................................................. 错误!未定义书签。
3.3 滤波器稳定性测量......................................................................... 错误!未定义书签。
5 参考文献 (12)附件一: ...................................................................................................... 错误!未定义书签。
摘要现代图像、语声、数据通信对线性相位的要求是普遍的。
数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。
根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。
与IIR滤波器相比,FIR的实现是非递归的,总是稳定的;更重要的是,FIR滤波器在满足幅频响应要求的同时,可以获得严格的线性相位特性。
因此,具有线性相位的FIR数字滤波器在高保真的信号处理,如数字音频、图像处理、数据传输、生物医学等领域得到广泛应用。
MATLAB实现数字FIR的高通_和带通等滤波器的源程序
利用汉宁窗设计Ⅰ型数字高通滤波器ﻫclear all;Wp=0.6*pi;ﻫWs=0.4*pi;tr_width=Wp-Ws; %过渡带宽度N=ceil(6.2*pi/tr_width) %滤波器长度ﻫn=0:1:N-1;ﻫWc=(Ws+Wp)/2;%理想低通滤波器的截止频率ﻫhd=ideal_hp1(Wc,N); %理想低通滤波器的单位冲激响应w_han=(hanning(N))'; %汉宁窗h=hd.*w_han; %截取得到实际的单位脉冲响应[db,mag,pha,w]=freqz_m2(h,[1]); %计算实际滤波器的幅度响应ﻫdelta_w =2*pi/1000;Ap=-(min(db(Wp/delta_w+1:1:501))) %实际通带纹波ﻫAs=-round(max(db(1:1:Ws/delta_w+1))) %实际阻带纹波subplot(221)ﻫstem(n,hd)ﻫtitle('理想单位脉冲响应hd(n)')subplot(222)stem(n,w_han)ﻫtitle('汉宁窗w(n)')ﻫsubplot(223)ﻫstem(n,h)ﻫtitle('实际单位脉冲响应hd(n)')ﻫsubplot(224)ﻫplot(w/pi,db)ﻫtitle('幅度响应(dB)')axis([0,1,-100,10])clear all;ﻫWp=0.6*pi;Ws=0.4*pi;tr_width=Wp-Ws; %过渡带宽度ﻫN=ceil(6.2*pi/tr_widt h) %滤波器长度n=0:1:N-1;ﻫWc=(Ws+Wp)/2; %理想低通滤波器的截止频率ﻫhd=ideal _hp1(Wc,N); %理想低通滤波器的单位冲激响应w_han=(hanning(N))';%汉宁窗h=hd.*w_han;%截取得到实际的单位脉冲响应ﻫ[db,mag,pha,w]=freqz_m2(h,[1]);%计算实际滤波器的幅度响应delta_w=2*pi/1000;Ap=-(min(db(Wp/delta_w+1:1:501))) %实际通带纹波ﻫAs=-round(max(db(1:1:Ws/delta_w+1))) %实际阻带纹波ﻫsubplot(221)ﻫstem(n,hd)ﻫtitle('理想单位脉冲响应hd(n)')subplot(222)stem(n,w_han)ﻫtitle('汉宁窗w(n)')subplot(223)ﻫstem(n,h)title('实际单位脉冲响应hd(n)')ﻫsubplot(224)plot(w/pi,db)title('幅度响应(dB)')ﻫaxis([0,1,-100,10])基于切比雪夫一致逼近法设计FIR数字低通滤波器ﻫclearall; ﻫf=[0 0.6 0.71]; %给定频率轴分点ﻫA=[1 1 0 0]; %给定在这些频率分点上理想的幅频响应ﻫweigh=[1 10]; %给定在这些频率分点上的加权ﻫb=remez(32,f,A,weigh); %设计出切比雪夫最佳一致逼近滤波器ﻫ[h,w]=freqz(b,1,256,1);h=abs(h);ﻫh=20*log10(h);ﻫsubplot(211)ﻫstem(b,'.');grid;title('切比雪夫逼近滤波器的抽样值')ﻫsubplot(212)plot(w,h);ﻫgrid;title('滤波器幅频特性(dB)')利用汉宁窗设计Ⅰ型数字带阻滤波器clear all;Wpl=0.2*pi;Wph=0.8*pi;Wsl=0.4*pi;ﻫWsh=0.6*pi;ﻫtr_width=min((Wsl-Wpl),(Wph-Wsh)); %过渡带宽度ﻫN=ceil(6.2*pi/tr_width) %滤波器长度ﻫn=0:1:N-1;Wcl=(Wsl+Wpl)/2; %理想低通滤波器的截止频率ﻫWch=(Wsh+W ph)/2;hd=ideal_bs(Wcl,Wch,N);%理想低通滤波器的单位冲激响应ﻫw _hann=(hanning(N))'; %汉宁窗ﻫh=hd.*w_han n; %截取得到实际的单位脉冲响应[db,mag,pha,w]=freqz_m2(h,[1]); %计算实际滤波器的幅度响应ﻫdelta_w=2*pi/1000;ﻫAp=-(min(db(1:1:Wpl/delta_w+1))) %实际通带纹波ﻫAs=-round(max(db(Wsl/delta_w+1:1:Wsh/delta_w+1))) %实际阻带纹波ﻫsubplot(221)ﻫstem(n,hd)ﻫtitle('理想单位脉冲响应hd(n)')subplot(222)ﻫstem(n,w_hann)ﻫtitle('汉宁窗w(n)')ﻫsubplot(223)stem(n,h)title('实际单位脉冲响应hd(n)')ﻫsubplot(224)plot(w/pi,db)ﻫtitle('幅度响应(dB)')axis([0,1,-100,10])利用三角窗设计Ⅲ型数字带通滤波器ﻫclearall; ﻫWpl=0.4*pi;Wph=0.6*pi;Wsl=0.2*pi;Wsh=0.8*pi;tr_width=min((Wpl-Wsl),(Wsh-Wph));%过渡带宽度N=ceil(6.1*pi/tr_width) %滤波器长度ﻫn=0:1:N-1;ﻫWcl=(Wsl+Wpl)/2;%理想低通滤波器的截止频率ﻫWch=(Wsh+Wph)/2;ﻫhd=ideal_bp2(Wcl,Wch,N); %理想低通滤波器的单位冲激响应w_tri=(triang(N))';%三角窗h=hd.*w_tri;%截取得到实际的单位脉冲响应ﻫ[db,mag,pha,w]=freqz_m2(h,[1]); %计算实际滤波器的幅度响应ﻫdelta_w=2*pi/1000;ﻫAp=-(min(db(Wpl/delta_w+1:1:W ph/delta_w+1))) %实际通带纹波As=-round(max(db(Wsh/delta_w+1:1:501))) %实际阻带纹波subplot(221)stem(n,hd)title('理想单位脉冲响应hd(n)')ﻫsubplot(222)stem(n,w_tri)title('三角窗w(n)')subplot(223)ﻫstem(n,h)title('实际单位脉冲响应hd(n)')ﻫsubplot(224)plot(w/pi,db)title('幅度响应(dB)')axis([0,1,-100,10])利用布拉克曼窗设计Ⅱ型数字带通滤波器ﻫclearall;Wpl=0.4*pi;Wph=0.6*pi;ﻫWsl=0.2*pi;Wsh=0.8*pi;ﻫtr_width=min((Wpl-Wsl),(Wsh-Wph)); %过渡带宽度N=ceil(11*pi/tr_width)+1 %滤波器长度n=0:1:N-1;Wcl=(Wsl+Wpl)/2; %理想低通滤波器的截止频率ﻫWch=(Wsh+Wph)/2;ﻫhd=ideal_bp1(Wcl,Wc h,N); %理想低通滤波器的单位冲激响应w_bman=(blackman(N))'; %布拉克曼窗ﻫh=hd.*w_bman;%截取得到实际的单位脉冲响应[db,mag,pha,w]=freqz_m2(h,[1]); %计算实际滤波器的幅度响应ﻫdelta_w=2*pi/1000;Ap=-(min(db(Wpl/delta_w+1:1:Wph/delta_w+1))) %实际通带纹波As=-round(max(db(Wsh/delta_w+1:1:501)))%实际阻带纹波subplot(221)stem(n,hd)ﻫtitle('理想单位脉冲响应hd(n)')ﻫsubplot(222)stem(n,w_bman)ﻫtitle('布拉克曼窗w(n)')ﻫsubplot(223)stem(n,h)ﻫtitle('实际单位脉冲响应hd(n)')ﻫsubplot(224)plot(w/pi,db)title('幅度响应(dB)')axis([0,1,-100,10])利用海明窗设计Ⅱ型数字低通滤波器ﻫclearall;Wp=0.2*pi;ﻫWs=0.4*pi;ﻫtr_width=Ws-Wp; %过渡带宽度ﻫN=ceil(6.6*pi/tr_width)+1 %滤波器长度ﻫn=0:1:N-1;Wc=(Ws+Wp)/2;%理想低通滤波器的截止频率hd=ideal_lp1(Wc,N); %理想低通滤波器的单位冲激响应ﻫw_ham=(hammi ng(N))'; %海明窗h=hd.*w_ham; %截取得到实际的单位脉冲响应ﻫ[db,mag,pha,w]=freqz_m2(h,[1]);%计算实际滤波器的幅度响应delta_w=2*pi/1000;ﻫAp=-(min(db(1:1:Wp/delta_w+1))) %实际通带纹波As=-round(max(db(Ws/delta_w+1:1:501))) %实际阻带纹波subplot(221)ﻫstem(n,hd)ﻫtitle('理想单位脉冲响应hd(n)')ﻫsubplot(222)ﻫstem(n,w_ham)title('海明窗w(n)')ﻫsubplot(223)ﻫstem(n,h)ﻫtitle('实际单位脉冲响应hd(n)') subplot(224)ﻫplot(w/pi,db)ﻫtitle('幅度响应(dB)')ﻫaxis([0,1,-100,10])%--------------------------------------------------------ﻫfunction[db,mag,pha,w]=freqz_m2(b,a)ﻫ%滤波器的幅值响应(相对、绝对)、相位响应ﻫ%db:相对幅值响应%mag:绝对幅值响应%pha:相位响应ﻫ%w 采样频率;ﻫ%b 系统函数H(z)的分子项(对FIR,b=h)%a 系统函数H(z)的分母项(对FIR,a=1)[H,w]=freqz(b,a,1000,'whole');ﻫH=(H(1:1:501))';ﻫw=(w(1:1:501))';mag=abs(H); %绝对幅值响应db=20*log10((mag+eps)/max(mag)); %相对幅值响应ﻫpha=angle(H);%相位响应利用模拟Butterworth滤波器设计数字低通滤波器ﻫ%exa4-8_pulseDF forexample4-8% using Butterworth analog lowpass filter todesigndigital lowpass filterﻫ%利用模拟Butterworth滤波器设计数字低通滤波器%脉冲响应不变法ﻫwp=0.2*pi;ws=0.3*pi;ﻫRp=1;ﻫAs=15;T=1;%性能指标ﻫRip=10^(-Rp/20);Atn=10^(-As/20);OmgP=wp*T;OmgS=ws*T;ﻫ[N,OmgC]=buttord(OmgP,OmgS,Rp,As,'s');%选取模拟滤波器的阶数ﻫ[cs,ds]=butter(N,OmgC,'s'); %设计出所需的模拟低通滤波器ﻫ[b,a]=impinvar(cs,ds,T); %应用脉冲响应不变法进行转换ﻫ%求得相对、绝对频响及相位、群迟延响应ﻫ[db,mag,pha,grd,w]=freqz_m(b,a);ﻫ%下面绘出各条曲线subplot(2,2,1);plot(w/pi,mag);title('幅频特性');xlabel('w(/pi)');ylabel('|H(jw)|');axis([0,1,0,1.1]);ﻫset(gca,'XTickMode','manual','XTick',[0 0.2 0.3 0.5 1]);ﻫset(gca,'YTickMode','manual','YTick',[0AtnRip 1]);gridﻫsubplot(2,2,2);ﻫplot(w/pi,db);title('幅频特性(dB)');ﻫxlabel('w(/pi)');ﻫylabel('dB');ﻫaxis([0,1,-40,5]);set(gca,'XTickMode','manual','XTick',[0 0.2 0.3 0.5 1]);set(gca,'YTickMode','manual','YTick',[-40 -As -Rp0]);ﻫgridﻫsubplot(2,2,3);plot(w/pi,pha/pi);title('相频特性');ﻫxlabel('w(/pi)');ﻫylabel('pha(/pi)');ﻫaxis ([0,1,-1,1]);ﻫset(gca,'XTickMode','manual','XTick',[0 0.2 0.3 0.5 1]);ﻫgridsubplot(2,2,4);plot(w/pi,grd);title('群延迟');ﻫxlabel('w(/pi)');ylabel('Sample');axis([0,1,0,12]);ﻫset(gca,'XTickMode','manual','XTick',[0 0.2 0.3 0.5 1]);gridfunction[db,mag,pha,grd,w]=freqz_m(b,a)%滤波器幅值响应(绝对、相对)、相位响应及群延迟ﻫ%Usage: [db,mag,pha,grd,w]=freqz_m(b,a) %500点对应[0,pi]ﻫ%db 相对幅值响应;mag 绝对幅值响应;pha 相位响应;grd 群延迟响应%w 采样频率;b 系统函数H(z)的分子项(对FIR,b=h)ﻫ%a系统函数H(z)的分母项(对FIR,a=1)ﻫ[H,w]=freqz(b,a,500);%500点的复频响应mag=abs(H);ﻫdb=20*log10((mag+eps)/max(mag));ﻫpha=angle(H);ﻫgrd=grpdelay(b,a,w);基于频域抽样法的FIR数字带阻滤波器设计ﻫclearall;N=41;T1=0.598;alpha=(N-1)/2;l=0:N-1;ﻫwl= (2*pi/N)*l;Hrs=[ones(1,6),T1,zeros(1,7),T1,ones(1,11),T1,zeros(1,7),T1,ones (1,6)]; %理想振幅采样响应ﻫHdr=[1,1,0,0,1,1];ﻫwdl=[0,0.3,0.3,0.7,0.7,1];ﻫk1=0:floor((N-1)/2);ﻫk2=floor((N-1)/2)+1:N-1;ﻫangH=[pi/2-alp ha*(2*pi)/N*(k1+0.5),-pi/2+alpha*(2*pi)/N*(N-k2-0.5)]; %相位约束条件ﻫHdk=Hrs.*exp(j*angH);%构成Hd(k)ﻫh1=ifft(Hdk,N);ﻫn=0:1:N-1;ﻫh=real(h1.*exp(j*pi*n/N));%实际单位冲激响应[db,mag,pha,w]=freqz_m2(h,[1]);[Hr,ww,a,L]=hr_type3(h); %实际振幅响应subplot(221)ﻫplot(wl/pi+1/N,Hrs,'.',wdl,Hdr)ﻫtitle('频率样本Hd(k):N=41')ﻫaxis([0 1-0.1 1.2])subplot(222)ﻫstem(l,h)title('实际单位脉冲响应h(n)')ﻫsubplot(223)ﻫplot(ww/pi,Hr,wl/pi+1/N,Hrs,'.')title('实际振幅响应H(w)')ﻫaxis([01-0.11.2])subplot(224)plot(w/pi,db)ﻫtitle('幅度响应(dB)')ﻫaxis([0 1-80 10])ﻫfunction [db,mag,pha,w] =freqz_m(b,a);%滤波器的幅值响应(相对、绝对)、相位响应ﻫ%db:相对幅值响应ﻫ%mag:绝对幅值响应ﻫ%pha: 相位响应%w采样频率;ﻫ%b系统函数H(z)的分子项(对FIR,b=h)ﻫ%a系统函数H(z)的分母项(对FIR,a=1)[H,w]= freqz(b,a,1000,'whole');ﻫH= (H(1:1:501))'; w =(w(1:1:501))';ﻫm ag= abs(H);db = 20*log10((mag+eps)/max(mag));pha= angle(H);ﻫ%pha= unwrap(angle(H));function[Hr,w,c,L]=hr_type3(h);%计算所设计的3型滤波器的振幅响应ﻫ%Hr=振幅响应ﻫ%b=3型滤波器的系数%L=Hr的阶次%h=3型滤波器的单位冲击响应ﻫM=length(h);L=(M-1)/2;ﻫc=[2*h(L+1:-1:1)];ﻫn=[0:1:L];w=[0:1:500]'*2*pi/500;ﻫHr=sin(w*n)*c';基于频域抽样法的FIR数字带通滤波器设计ﻫwsl=0.12*pi;%低阻带边缘ﻫwsh=0.82*pi;%高阻带边缘ﻫwpl=0.32*pi;%低通带边缘wph=0.62*pi;%高通带边缘ﻫdelta=(wpl-wsl);%过度带ﻫM=ceil(2*pi*3/delta);%抽样点数ﻫal=(M-1)/2;ﻫwl=(2*pi/M);%抽样间隔ﻫk=0:M-1;T1=0.12;T2=0.6;%过渡带样本点Hrs=[zeros(1,ceil(0.12*pi/wl)+1),T2,T1,ones(1,ceil(0.3*pi/wl)),T1,T2,zeros (1,ceil(0.3734*pi/wl)),T2,T1,ones(1,ceil(0.3*pi/wl)),T1,T2,zeros(1,ceil(0.12*pi/wl)+1)];ﻫwdl=[0 0.120.320.620.821];ﻫk1=0:floor((M-1)/2);k2=floor((M-1)/2)+1:M-1;angH=[-al*(2*pi)/M*k1,al*(2*pi)/M*(M-k2)];H=Hrs.*exp(j*angH);ﻫh=real(ifft(H));%傅立叶反变换figure(1);%冲击响应图ﻫstem(k,h);title('impulseresponse');xlabel('n');ylabel('h(n)');ﻫgrid;figure(2);%幅频曲线图Hf=abs(H);w=k*wl/pi;ﻫplot(w,Hf,'*b-')axis([0 1 -0.1 1.1]);title('amplitude response');ﻫxlabel('frequencyin piunits');ylabel('H r(w)');ﻫset(gca,'xtickmode','manual','xtick',wdl);set(gca,'ytickmode','manual','ytick',[00.120.6 1]);grid;figure(3);ﻫfs=15000;[c,f3]=freqz(h,1);ﻫf3=f3/pi*fs/2;ﻫplot(f3,20*log10(abs(c)));title('频谱特性');xlabel('频率/HZ');ylabel('衰减/dB');ﻫgrid;t=(0:100)/fs;ﻫx=sin(2*pi*t*700)+sin(2*pi*t*3200)+sin(2*pi*t*6200);ﻫq=filter (h,1,x);ﻫ[a,f1]=freqz(x);f1=f1/pi*fs/2;[b,f2]=freqz(q);ﻫf2=f2/pi*fs/2;figure(4);ﻫsubplot(2,1,1);plot(f1,abs(a));ﻫtitle('输入波形频谱图');xlabel('频率');ylabel('幅度')ﻫsubplot(2,1,2);ﻫplot(f2,abs(b));title('输出波形频谱图');xlabel('频率');ylabel('幅度')基于汉宁窗的FIR数字高通滤波器设计function s2Fs=15000;t=(0:100)/Fs;ﻫx=sin(2*pi*500*t)+sin(2*pi*3000*t)subplot(245);ﻫstem(x);title('原始信号');axis([0,100,-2,2]);Ws=7*pi/30;Wp=13*pi/30;ﻫtr_wid=Wp-Ws; %过渡带宽度ﻫN=ce il(11*pi/tr_wid) %滤波器长度n=0:1:N-1;ﻫWc=(Ws+Wp)/2; %理想高通滤波器的截止频率ﻫhd=ideal_hp1(Wc,N); %理想高通滤波器的单位冲激响应ﻫw_bla=(blackman(N))'; %布拉克曼h=hd.*w_bla;%截取得到实际的单位脉冲响应ﻫ[db,mag,pha,grd,w]=freqz_m(h,[1]); %计算实际滤波器的幅度响应ﻫdelta_w=2*pi/1000;As=-round(max(db(1:1:Ws/delta_w+1))) %实际阻带纹波,r ound是取整函数ﻫy=filter(h,1,x)subplot(246)plot(y)ﻫtitle('滤波后的信号');axis([0,100,-1,1])ﻫsubplot(241)stem(n,hd)ﻫtitle('理想单位脉冲响应hd(n)')subplot(242)ﻫstem(n,w_bla)ﻫtitle('布拉克满窗w(n)')subplot(243)stem(n,h)ﻫtitle('实际单位脉冲响应hd(n)')subplot(244)ﻫplot(w/pi,db)ﻫtitle('幅度响应(dB)')axis([0,1,-100,10])function [db,mag,pha,grd,w] = freqz_m(b,a);ﻫ[H,w] = freqz(b,a,1000,'whole');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(b,a,w);subplot(247);plot(pha)ﻫtitle('相频响应')function hd=ideal_hp1(Wc,N)alp=(N-1)/2;ﻫn=0:1:N-1;m=n-alp+eps; %eps是一个很小很小的数ﻫhd=[sin(pi*m)-sin(Wc*m)]./(pi*m);用双线性法设计巴特沃斯高通数字滤波器clear all; clc; close allfs=120; T=1/fs;ﻫrp=1; rs=30;ﻫWp=0.35*pi; Ws=0.65*pi; %数字滤波器指标ﻫwp=2*tan(Wp/2)/T; ws=2*tan(Ws/2)/T;%预畸变,将数字滤波器的指标变为模拟滤波器的指标[N,w]=buttord(wp,ws,rp,rs,'s'); %求滤波器阶数和3dB截止频率[Z,P,K]=buttap(N); %设计模拟低通滤波器ﻫ[Md,Nd]=zp2tf(Z,P,K);%将零极点形式转换为传输函数形式[M,N]=lp2hp(Md,Nd,w); %对低通滤波器进行频率变换[h,w]=freqs(M,N,512); %模拟滤波器的幅频响应subplot(2,1,1);plot(w,abs(h)); grid;xlabel('Hz');ylabel('幅度'); title('模拟高通滤波器');[Mh,Nh]=bilinear(M,N,1/T); %对模拟滤波器双线性变换[h1,w1]=freqz(Mh,Nh); %数字滤波器的幅频响应subplot(2,1,2);ﻫplot(w1/pi,20*log10(abs(h1))); grid; xlabel('ω/π');ylabel('幅度(dB)'); title('数字高通滤波器');ﻫ %图-5模拟滤波器与设计的滤波器的单位冲击响应k=0:2000; k2=1:1001;ﻫx=10*sin(pi/10*k/fs)+5*sin(10*pi*k/fs)+3*sin(30*pi*k/fs);figureﻫsubplot(2,1,1)ﻫX=fft(x)*2/2001;ﻫy=filter(Mh,Nh,x);ﻫplot(k,y); ylim([-5 5]); title('高通数字滤波器输出');ﻫY=fft(y)*2/2001;df=fs/2001; ff=(k2-1)*df;subplot(2,1,2); plot(ff,abs(X(k2)),'r','linewidth',2); hol d onplot(ff,abs(Y(k2)),'b'); title('输入输出频谱比较'); grid;。
FIR滤波器窗函数设计法详细步骤以及Matlab代码
FIR滤波器窗函数设计法详细步骤以及Matlab代码采⽤窗函数法设计理想低通,⾼通滤波器,参考北京交通⼤学陈后⾦主编的【数字信号处理】5.2节窗函数法设计线性相位FIR数字滤波器P164,和P188。
设计步骤如下:1)确定滤波器类型,不同的FIR类型可设计不同类型的滤波器,I型可设计LP(低通滤波器),HP(⾼通滤波器),BP(带通滤波器),BS(带阻滤波器)。
Fir I型Fir II型Fir III型Fir IV型LP,HP,BP,BS LP,BP BP HP,BP,BS2)确定设计的滤波器的参数Eg:若要设计⼀个低通滤波器,fp=20,fs=30;Ap=1,As=40,则3db截频Wc = 2*pi*(fs-fp)/Fs;Fs为采样频率。
3)确定窗函数窗的类型主瓣宽度近似过渡带宽度δp,δs Ap(dB)As(dB)矩形窗4pi/N 1.8pi/N0.090.8221Hann8pi/N 6.2pi/N0.00640.05644Hamming8pi/N7pi/N0.00220.01953Blackman12pi/N11.4pi/N0.00020.001774Kaiser可调窗,需要确定β值 50<A , β = 0.1102(A-8.7); 21<=A<=50, β=0.5842(A-21)^0.4 + 0.07886(A-21); A<21, β = 0;4) 确定滤波器的阶数M,⾸先确定滤波器的长度N。
对于除凯撒窗以外的窗函数,N值由以下公式确定:N>=(窗函数近似过渡带宽度)/(Wp-Ws)Fir I型Fir II型Fir III型Fir IV型脉冲响应h[k]为偶对称h[k]为偶对称h[k]为奇对称h[k]为奇对称窗函数长度:N=mod(N+1,2)+N N=mod(N,2)+N N=mod(N+1,2)+N N=mod(N,2)+N阶数M=N-1为偶数M=N-1为奇数M=N-1为偶数M=N-1为奇数若采⽤Kaiser窗,则M≈(A-7.95)÷ 2.285*|Wp-Ws|,A>21。
用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的FIR数字滤波器设计(多通带,窗函数法)
数字信号处理课程设计报告设计名称:基于matlab的FIR数字滤波器设计彪一、课程设计的目的1、通过课程设计把自己在大学中所学的知识应用到实践当中。
2、深入了解利用Matlab设计FIR数字滤波器的基本方法。
3、在课程设计的过程中掌握程序编译及软件设计的基本方法。
4、提高自己对于新知识的学习能力及进行实际操作的能力。
5、锻炼自己通过网络及各种资料解决实际问题的能力。
二、主要设计内容利用窗函数法设计FIR滤波器,绘制出滤波器的特性图。
利用所设计的滤波器对多个频带叠加的正弦信号进行处理,对比滤波前后的信号时域和频域图,验证滤波器的效果。
三、设计原理FIR 滤波器具有严格的相位特性,对于信号处理和数据传输是很重要的。
目前 FIR滤波器的设计方法主要有三种:窗函数法、频率取样法和切比雪夫等波纹逼近的最优化设计方法。
常用的是窗函数法和切比雪夫等波纹逼近的最优化设计方法。
本实验中的窗函数法比较简单,可应用现成的窗函数公式,在技术指标要求高的时候是比较灵活方便的。
如果 FIR 滤波器的 h(n)为实数, 而且满足以下任意条件,滤波器就具有准确的线性相位:第一种:偶对称,h(n)=h(N-1-n),φ (ω)=-(N-1)ω/2第二种:奇对称,h(n)=-h(N-1-n), φ(ω)=-(N-1)ω/2+pi/2对称中心在n=(N-1)/2处四、设计步骤1.设计滤波器2.所设计的滤波器对多个频带叠加的正弦信号进行处理3.比较滤波前后信号的波形及频谱五、用窗函数设FIR 滤波器的基本方法基本思路:从时域出发设计 h(n)逼近理想 hd(n)。
设理想滤波器的单位响应在时域表达为hd(n),则Hd(n) 一般是无限长的,且是非因果的,不能直接作为FIR 滤波器的单位脉冲响应。
要想得到一个因果的有限长的滤波器单位抽样响应 h(n),最直接的方法是先将hd(n)往右平移,再迕行截断,即截取为有限长因果序列:h(n)=hd(n)w(n),并用合适的窗函数迕行加权作为FIR 滤波器的单位脉冲响应。
MATLAB FIR滤波器
Matlab中,函数fir1()和fir2()利用加窗傅里叶级数法设计FIR滤波器。
函数fir1()用来设计传统的LP(低通)、HP(高通)、BP(带通)、BS(带阻)和多频带FIR滤波器;而函数fir2()用来设计具有任意幅度响应的的FIR滤波器。
一、函数fir1的各种形式如下:b= fir1(N,Wn)b= fir1(N,Wn,'ftype')b= fir1(N,Wn,window)b= fir1(N,Wn,'ftype',window)b= fir1(...,'normalization')其中,1、N为滤波器节点个数;2、Wn(0<Wn<1)为归一化截止频率;3、ftype为滤波器类型(默认(缺省时)是low):•'high' for a highpass filter with cutoff frequency Wn.•'stop' for a bandstop filter, if Wn = [w1 w2]. The stopband frequency range is specified by this interval.•'DC-1' to make the first band of a multiband filter a passband.•'DC-0' to make the first band of a multiband filter a stopband.4、window为所加窗的类型(默认的是hamming窗),e.g hamming、chebwin、blackman、hanning、kaiser等。
5、normalization为是否将滤波器的幅度进行归一化:•'scale' (default): Normalize the filter so that the magnitude response of the filter at the center frequency of the passband is 0 dB.•'noscale': Do not normalize the filter.fir1()举例:设计一个低通滤波器二、函数fir2的各种形式如下:b = fir2(n,f,m)b = fir2(n,f,m,window)b = fir2(n,f,m,npt)b = fir2(n,f,m,npt,window)b = fir2(n,f,m,npt,lap)b = fir2(n,f,m,npt,lap,window)其中,向量f是指定频率点的幅度响应样本,与m定义的幅度响应样本对应;f和m具有相同的长度,并且f的第一个和最后一个分量分别是0和1;可以对f中的频点进行复制,从而跳变地逼近幅度响应指标。
【FPGA】MATLAB生成FIR滤波器的操作步骤(包括生成VerilogHDL代码以及仿真过程)
【FPGA】MATLAB⽣成FIR滤波器的操作步骤(包括⽣成VerilogHDL代码以及仿真过程)使⽤MATLAB⽣成滤波器有很多学问,这⾥只是作为初步的探索,和FPGA的更多结合,也正在探索中,相关博⽂例如:,该专题⽬录正在记录我学习FIR滤波器的过程。
MATLAB⽣成30阶低通1MHz海明窗函数设计步骤:(1)在MATLAB命令窗⼝中输⼊“fdatool”出现如下对话框:注意,在MATLAB2018以后的版本中输⼊:filterDesigner,即可打开上述界⾯。
(2)设定为低通滤波器。
(3)选择FIR滤波器的设计类型为窗函数。
设置FIR滤波器为30阶滤波器,选择窗函数的类型为海明窗函数,海明窗函数可以得到旁瓣更⼩的效果,能量更加集中在主瓣中,主瓣的能量约占99.963%,第⼀旁瓣的峰值⽐主瓣⼩40dB,但主瓣宽度与海明窗相同。
它定义为:(4)输⼊抽样频率和截⽌频率,分别是16MHz和1MHz。
(5)点击Design Filter 得到结果,如下图:(6)量化输⼊输出,点击⼯作栏左边的量化选项,即“set quantization parameters”选项,选择定点,设置输⼊字长为8,其他选择默认,如下图⽰:及测试⽂件:仿真结果如下图:如上图所⽰,当输⼊为线性,或者输⼊频率较低时,输出幅度不会被抑制,当输⼊频率较⾼,输出幅度会受到⼤幅度抑制,⽽当输⼊为⽩噪声或者混频信号时,滤波器会过滤掉⾼频信号。
这⾥分出来⼀⼩部分空间,引⽤点别⼈的内容来简单介绍下上述⼏个参数的意思:Response Type:选择FIR滤波器的类型:低通、、带通和带阻等。
在DDC/DUC模块设计中,抽取和内插需要使⽤Halfband Lowpass 类型,⽽channel filr需要使⽤Rsed-cosine类型。
Design Method:FIR滤波器设计⽅法有多种,最常⽤的是窗函数设计法(Window)、等波纹设计法(Equiripple)和最⼩⼆乘法(Least-Squares)等。
matlab用窗函数法设计线性相位fir低通滤波器
%用窗函数法设计线性相位低通滤波器clear all;wp=0.5*pi;ws=0.6*pi;wd=ws-wp;%hanning窗N_hann=ceil(8*pi/wd);wc=(wp+ws)/2;if mod(N_hann,2)==0N_hann=N_hann+1;endhann_win=hanning(N_hann);b_hann=fir1(N_hann-1,wc/pi,hann_win);freq_axis=[0:pi/512:pi-pi/512];freqn=[0:511]/512;H_hann=freqz(b_hann,1,512);figure(1);subplot(211);plot(freqn,20*log10(abs(H_hann)));xlabel('归一化频率w/pi');ylabel('幅度谱(dB)'); title('采用hanning 窗设计fir滤波器幅度谱'); subplot(212);plot(freqn,angle(H_hann));xlabel('归一化频率w/pi');ylabel('相位谱');title('采用hanning窗设计fir滤波器相位谱');%hamming窗N_hamm=ceil(8*pi/wd);wc=(wp+ws)/2;if mod(N_hamm,2)==0N_hamm=N_hamm+1;endhamm_win=hamming(N_hamm);b_hamm=fir1(N_hamm-1,wc/pi,hamm_win);H_hamm=freqz(b_hamm,1,512);figure(2)subplot(211);plot(freqn,20*log10(abs(H_hamm)));xlabel('归一化频率w/pi');ylabel('幅度谱(dB)'); title('采用hamming 窗设计fir滤波器幅度谱'); subplot(212);plot(freqn,angle(H_hamm));xlabel('归一化频率w/pi');ylabel('相位谱');title('采用hamming窗设计fir滤波器相位谱');N2_hamm=2*N_hamm;wc=(wp+ws)/2;if mod(N2_hamm,2)==0N2_hamm=N2_hamm+1;endhamm_win=hamming(N2_hamm);b_hamm=fir1(N2_hamm-1,wc/pi,hamm_win);H_hamm=freqz(b_hamm,1,512);figure(3)subplot(211);plot(freqn, 20*log10(abs(H_hamm)) );xlabel('归一化频率w/pi');ylabel('幅度谱(dB)');title('窗长增大一倍,采用hamming窗设计fir滤波器幅度谱'); subplot(212);plot( freqn,angle(H_hamm));xlabel('归一化频率w/pi');ylabel('相位谱');title('窗长增大一倍,采用hanning窗设计fir滤波器相位谱'); 继续阅读。
MATLAB在FIR滤波器中的应用
一、基本窗函数 二、窗函数法设计FIR滤波器 三、频率抽样法设计FIR滤波器
基本窗函数
• 1、矩形窗(Rectanglar Window) W=boxcar(n) n-窗函数的长度 example
n=50; y=boxcar(n); [h,w]=freqz(y,1); subplot(2,1,1); stem(y); subplot(2,1,2); plot(w/pi,20*log(abs(h)/abs(h(1))))
• • • •
6、凯塞窗 w=kaiser(n,beta) n-窗函数的长度, beta-用于控制旁瓣的高度,n一定, beta越大,其旁瓣就越小。
二、利用窗函数法设计FIR滤波器
• 1、Fir1函数:设计具有标准频率响应的FIR
• • • • • • (1) b=fir1(n,wn) b=fir1(n,wn,’high’) b=fir1(n,wn,’low’) b=fir1(n,wn,’bandpass’) b=fir1(n,wn,’stop’)
• • • • • •
2、三角窗 w=triang(n) 3、汉宁窗函数 w=hanning(n) w=hanning(n,’symmetric’) w=hanning(n,’periodic’)
• 4、海明窗函数 w=hamming(n) w=hamming(n,sflag) 5、布莱克曼窗函数 w=blackman(n) w=blackman(n,sflag)
三、频率抽取法设计FIR数字滤波器
• 1、Remez函数:通过最佳逼近法设计 FIR滤波器 • b=remez(n,f,a) • 通过最大误差最小化原则,设计一个由f 和a指定幅频响应和实线性相位对称的n 阶FIR数字滤波器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB窗函数法实现FIR的高通,带通和低通滤波器的程序MATLAB 学院:地球物理与石油资源学院班级:姓名:学号:班内编号:指导教师:完成日期:测井11001大牛啊啊啊陈义群2013年6月3日课程设计报告一、题目FIR滤波器的窗函数设计法及性能比较 1. FIR滤波器简介数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。
根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应滤波器和有限冲激响应滤波器。
与IIR滤波器相比,FIR滤波器的主要特点为: a. 线性相位;b.非递归运算。
2. FIR 滤波器的设计FIR滤波器的设计方法主要有三种:a.窗函数设计法;b.频率抽样发;c.最小平法抽样法;这里我主要讨论在MATLAB环境下通过调用信号分析与处理工具箱的几类窗函数来设计滤波器并分析与比较其性能。
窗函数法设计FIR滤波器的一般步骤如下: a. 根据实际问题确定要设计的滤波器类型; b. 根据给定的技术指标,确定期望滤波器的理想频率特性;c. 求期望滤波器的单位脉冲响应;d. 求数字滤波器的单位脉冲响应; e. 应用。
常用的窗函数有(1)Hanningwindoww(n)?[?((2)Hammingw indoww(n)?[?((3)Balckmanwindoww(n)?[ ?((4)KaiserwindowI0{?1?[2n/(N?1)]2}w(n )?RN(n)I0(?)式中I0(x)是零阶Bessel函数,可定义为()2?n4?n)?()]RN(n)N?1N?1()2?n)]RN(n)N ?1() ?nN?1)]RN(n)() (x/2)m2I0(x)?1??m!m?1? 当x?0时与矩形窗一致;当x?时与海明窗结果相同;当x?时与布莱克曼窗结果相同。
3.窗函数的选择标准 1. 较低的旁瓣幅度,尤其是第一旁瓣; 2. 旁瓣幅度要下降得快,以利于增加阻带衰减;3. 主瓣宽度要窄,这样滤波器过渡带较窄。
4. 常用窗函数的参数5. FIR 滤波器的MATLAB实现方式在MATLAB信号分析与处理工具箱中提供了大量FIR窗函数的设计函数,本次用到主要有以下几种:hanning(N) hanning窗函数的调用hamming(N) hamming窗函数的调用blackman(N) blackman窗函数的调用kaiser(n+1,beta) kaiser窗函数的调用kaiserord 计算kaiser窗函数的相关参数freqz 求取频率响应filter对信号进行滤波的函数6. 实验具体步骤本次实验分别通过调用hanning ,hamming ,Blackman,kaiser窗函数,给以相同的技术参数,来设计低通,带通,高通滤波器,用上述窗函数的选择标准来比较各种窗函数的优劣,并给以一个简谐波进行滤波处理,比较滤波前后的效果。
达到综合比较的效果。
二、源代码 1.利用hanning hamming blackman kaiser窗,设计一个低通FIR function lowpassfilter clc; clear all; Fs=100;%采样频率fp=20;%通带截止频率fs=30;%阻带起始频率wp=2*pi*fp/Fs;%将模拟通带截止频率转换为数字滤波器频率ws=2*pi*fs/Fs;%将模拟阻带起始频率转换为数字滤波器频率wn=(wp+ws)/2/pi;%标准化的截止频率响应Bt=ws-wp; N0=ceil(*pi/Bt);%滤波器长度N=N0+mod(N0+1,2); window1=hanning(N);%使用hanning窗函数window2=hamming(N);%使用hamming窗函数window3=blackman(N);%使用blackman 窗函数[n,Wn,beta,ftype]=kaiserord([20 25],[1 0],[ ],100); window4=kaiser(n+1,beta);%使用kaiser窗函数%设计加窗函数fir1 b1=fir1(N-1,wn,window1); b2=fir1(N-1,wn,window2);b3=fir1(N-1,wn,window3);b4=fir1(n,Wn/pi,window4 ,’noscale’); %求取频率响应[H1,W1]=freqz(b1,1,512,2);[H2,W2]=freqz(b2,1,512,2);[H3,W3]=freqz(b3,1,512,2);[H4,W4]=freqz(b4,1,512,2);figure(1);subplot(2,2,1),plot(W1,20*log10(abs(H1)) );%绘制频率响应图形axis([0,1,-100,100]); title(‘低通hanning窗的频率响应图形’); xlabel(‘频率(Hz)’); ylabel(‘幅值’); subplot(2,2,2),plot(W2,20*log10(abs(H2)) );%绘制频率响应图形axis([0,1,-100,100]); title(‘低通hamming窗的频率响应图形’); xlabel(‘频率(Hz)’); ylabel(‘幅值’); subplot(2,2,3),plot(W3,20*log10(abs(H3)) );%绘制频率响应图形axis([0,1,-100,100]); title(‘低通blackman窗的频率响应图形’);xlabel(‘频率(Hz)’); ylabel(‘幅值’); subplot(2,2,4),plot(W4,20*log10(abs(H4)) );%绘制频率响应图形axis([0,1,-100,100]); title(‘低通kaiser窗的频率响应图形’); xlabel(‘频率(Hz)’); ylabel(‘幅值’); T=1/Fs; L=100;%信号长度t=(0:L-1)*T;%定义时间范围和步长y=sin(2*pi*5*t)+5*sin(2*pi*15*t)+8*sin( 2*pi*40*t);%滤波前的图形NFFT = 2extpow2(L); % Next power of 2 from length of y Y = fft(y,NFFT)/L;%将时域信号变换到频域 f = Fs/2*linspace(0,1,NFFT/2+1);%频域采样figure(2);plot(f,2*abs(Y(1:NFFT/2+1)));xlabel(‘freq uency/Hz’);ylabel(‘Amuplitude’) ;%滤波前频谱title(‘滤波前的频谱’); %滤波后频谱%采用hanning窗滤波器yy1=filter(b1,1,y);%调用滤波函数YY1=fft(yy1,NFFT)/L;%进行傅里叶变换,下同。
f1=Fs/2*linspace(0,1,NFFT/2+1);figure(3);subplot(2,2,1),plot(f1,2*abs(YY1(1:NFFT/ 2+1))) ;xlabel(‘frequency/Hz’);ylabel(‘Am uplitude’); title(‘hanning窗的滤波效果’); %采用hammning窗滤波器yy2=filter(b2,1,y);YY2=fft(yy2,NFFT)/L;f1=Fs/2*linspace(0,1,NFFT/2+1); subplot(2,2,2),plot(f1,2*abs(YY2(1:NFFT/2+1))) ;xlabel(‘frequency/Hz’);ylabel(‘Am uplitude’); title(‘hamming窗的滤波效果’); %采用blackman窗滤波器yy3=filter(b3,1,y);YY3=fft(yy3,NFFT)/L;f1=Fs/2*linspace(0,1,NFFT/2+1); subplot(2,2,3),plot(f1,2*abs(YY3(1:NFFT/2+1))) ;xlabel(‘frequency/Hz’);ylabel(‘Amuplitude’); title(‘blackman窗的滤波效果’); %采用kaiser窗滤波器yy4=filter(b4,1,y); YY4=fft(yy4,NFFT)/L;f1=Fs/2*linspace(0,1,NFFT/2+1); subplot(2,2,4),plot(f1,2*abs(YY4(1:NFFT/ 2+1))) ;xlabel(‘frequency/Hz’);ylabel(‘Am uplitude’);xlabel(‘frequency/Hz’);ylabel(‘Amuplitud e’); title(‘kaiser窗函数滤波效果’); %滤波前后的信号的时域对比figure(4);plot(y);xlabel(‘时间/s’);ylabel(‘振幅’);title(‘滤波前振幅特性’); figure(5); subplot(2,2,1),plot(yy1);xlabel(‘时间/s’);ylabel(‘振幅’);title(‘hanning窗函数滤波振幅特性’); subplot(2,2,2),plot(yy2);xlabel(‘时间/s’);ylabel(‘振幅’);title(‘hamming窗函数滤波振幅特性’); subplot(2,2,3),plot(yy3);xlabel(‘时间/s’);ylabel(‘振幅’);title(‘blackman窗函数滤波振幅特性’); subplot(2,2,4),plot(yy4);xlabel(‘时间/s’);ylabel(‘振幅’);title(‘kaiser窗函数滤波振幅特性’); %滤波前后的信号的相位对比figure(6); plot(angle(Y));xlabel(‘时间/s’);ylabel(‘相位’);title(‘滤波前的相位特性’); figure(7); subplot(2,2,1),plot(angle(YY1));xlabel(‘时间/s’);ylabel(‘相位’);title(‘hanning窗函数滤波相位特性’); subplot(2,2,2),plot(angle(YY2));xlabel(‘时间/s’);ylabel(‘相位’);title(‘hamming窗函数滤波相位特性’); subplot(2,2,3),plot(angle(YY3));xlabel(‘时间/s’);ylabel(‘相位’);title(‘blackman窗函数滤波相位特性’); subplot(2,2,4),plot(angle(YY4));xlabel(‘时间/s’);ylabel(‘相位’);title(‘kaiser窗函数滤波相位特性’); 2.设计一个hanning hamming blackman kaiser窗函数bandpass_FIR %设计一个hanning hamming blackman kaiser窗函数bandpass_FIR function bandpassfilter Fs=100;%采样频率fp1=15;%通带下限截止频率fp2=20;%通带上限截止频率fs1=10; fs2=25; wp1=2*pi*fp1/Fs;%将通带下限截止频率转换为数字滤波器频率wp2=2*pi*fp2/Fs;%将通带上限截止频率转换为数字滤波器频率ws1=2*pi*fs1/Fs;%将通带下限截止频率转换为数字滤波器频率ws2=2*pi*fs2/Fs;%将通带上限截止频率转换为数字滤波器频率Bt=wp1-ws1; N0=ceil(*pi/Bt); N=N0+mod(N0+1,2);wn=[(wp1+ws1)/2/pi,(wp2+ws2)/2/pi]; window1=hanning(N);%使用hanning窗函数window2=hamming(N);%使用hamming窗函数window3=blackman(N);%使用blackman 窗函数%设过渡带宽度为5Hz [n,Wn,beta,ftype]=kaiserord([10 15 20 25],[0 1 0],[ ],100);%求阶数n以及参数beta window4=kaiser(n+1,beta);%使用kaiser窗函数%设计加窗函数fir1 b1=fir1(N-1,wn,window1);b2=fir1(N-1,wn,window2);b3=fir1(N-1,wn,window3);b4=fir1(n,Wn,window4,’noscale’); %求取频率响应[H1,W1]=freqz(b1,1,512,2);[H2,W2]=freqz(b2,1,512,2);[H3,W3]=freqz(b3,1,512,2);[H4,W4]=freqz(b4,1,512,2);figure(1);subplot(2,2,1),plot(W1,20*log10(abs(H1)) );%绘制频率响应图形axis([0,1,-100,100]); title(‘带通hanning窗的频率响应图形’); xlabel(‘频率(Hz)’); ylabel(‘幅值’); subplot(2,2,2),plot(W2,20*log10(abs(H2)) );%绘制频率响应图形axis([0,1,-100,100]); title(‘带通hamming窗的频率响应图形’); xlabel(‘频率(Hz)’); ylabel(‘幅值’); subplot(2,2,3),plot(W3,20*log10(abs(H3)) );%绘制频率响应图形axis([0,1,-100,100]); title(‘带通blackman窗的频率响应图形’); xlabel(‘频率(Hz)’); ylabel(‘幅值’); subplot(2,2,4),plot(W4,20*log10(abs(H4)) );%绘制频率响应图形axis([0,1,-100,100]); title(‘带通kaiser窗的频率响应图形’); xlabel(‘频率(Hz)’); ylabel(‘幅值’); T=1/Fs; L=100;%信号长度t=(0:L-1)*T;%定义时间范围和步长y=sin(2*pi*5*t)+5*sin(2*pi*15*t)+8*sin( 2*pi*40*t);%滤波前的图形NFFT = 2extpow2(L); % Next power of 2 from length of y Y = fft(y,NFFT)/L;%将时域信号变换到频域 f = Fs/2*linspace(0,1,NFFT/2+1);%频域采样figure(2);plot(f,2*abs(Y(1:NFFT/2+1)));xlabel(‘freq uency/Hz’);ylabel(‘Amuplitude’) ;%滤波前频谱title(‘滤波前的频谱’); %滤波后频谱%采用hanning窗滤波器yy1=filter(b1,1,y);%调用滤波函数YY1=fft(yy1,NFFT)/L;%进行傅里叶变换,下同。