实验11 用MATLAB设计FIR数字滤波器

合集下载

matlabfir滤波器设计

matlabfir滤波器设计

matlabfir滤波器设计在数字信号处理中,滤波器是一种常用的工具,用于处理信号的频率特性。

其中,FIR(有限脉冲响应)滤波器是一种常见的滤波器类型之一。

MATLAB提供了方便的工具和函数来设计和实现FIR滤波器。

在本文中,我们将介绍MATLAB中如何使用fir1函数来设计FIR滤波器。

要使用fir1函数设计FIR滤波器,需要指定滤波器的阶数和截止频率。

阶数决定了滤波器的复杂度,而截止频率则决定了滤波器的频率响应特性。

通过调整这两个参数,可以设计出不同类型的滤波器,如低通滤波器、高通滤波器、带通滤波器和带阻滤波器。

接下来,我们可以使用fir1函数来设计一个简单的低通滤波器。

例如,我们可以指定一个4阶低通滤波器,截止频率为0.5(归一化频率,取值范围为0到1)。

通过调用fir1函数并传入相应的参数,即可得到设计好的滤波器系数。

设计好滤波器系数后,我们可以将其应用于信号处理中。

例如,我们可以使用filter函数来对信号进行滤波。

将设计好的滤波器系数和待处理的信号作为输入参数传入filter函数,即可得到滤波后的信号。

这样,我们就可以实现对信号的滤波处理。

除了fir1函数外,MATLAB还提供了其他用于滤波器设计的函数,如firpm、fircls、firls等。

这些函数可以实现更复杂的滤波器设计,满足不同的需求。

通过选择合适的函数和参数,可以设计出性能优越的滤波器,用于各种信号处理应用中。

MATLAB提供了强大的工具和函数来设计和实现各种类型的滤波器。

通过合理选择滤波器的阶数和截止频率,以及使用适当的函数来设计滤波器系数,可以实现对信号的有效滤波处理。

希望本文能够帮助读者了解MATLAB中fir1函数的使用方法,进一步掌握滤波器设计的技巧,提高信号处理的效率和质量。

matlabfir滤波器设计

matlabfir滤波器设计

matlabfir滤波器设计MATLAB是一个高级编程语言和交互式环境,被广泛应用于各种科学和工程问题的数值分析、数据可视化和编程开发等领域。

FIR滤波器是数字信号处理中经常使用的一种滤波器,它是基于有限长冲激响应的滤波器。

在MATLAB平台上,我们可以使用fir1函数来设计FIR滤波器。

一、FIR滤波器设计基础1.1 什么是FIR滤波器FIR滤波器是有限长冲激响应滤波器,由于其具有线性相位特性和可控阶数等优点,在数字信号处理中得到了广泛的应用。

一般来说,FIR滤波器的频率响应特性由滤波器的系数函数确定。

FIR滤波器的设计一般采用窗函数法、最小二乘法、频率抽取法等方法。

窗函数法是最常见的一种方法,大部分情况下选择的是矩形窗、汉宁窗、布莱克曼窗等。

1.3 fir1函数介绍fir1函数是MATLAB中用于FIR滤波器设计的函数,用法为:h = fir1(N, Wn, type)N为滤波器的阶数,Wn是用于指定滤波器截止频率的参数,type指定滤波器类型,可以是低通、高通、带通、带阻等。

二、使用fir1函数设计FIR滤波器2.1 设计要求采样率为300Hz;滤波器阶数为50;截止频率为50Hz。

2.2 实现步骤(1)计算规范化截止频率规范化截止频率是指在数字滤波器设计中使用的无单位量,通常范围为0到1。

在本例中,我们需要将50Hz的截止频率转化为规范化截止频率。

Wn = 2*50/300 = 1/3根据计算出的规范化截止频率和滤波器阶数,我们可以使用fir1函数来进行滤波器设计。

此处滤波器的阶数为50,规范化截止频率为1/3,类型为低通。

(3)绘制滤波器的幅频响应图为了验证设计的低通FIR滤波器是否符合要求,我们需要绘制其幅频响应图。

freqz(h,1,1024,300)经过上述步骤后,我们就得到了一张低通FIR滤波器的幅频响应图,如下图所示:图1.低通FIR滤波器的幅频响应图三、总结通过上述例子,我们可以看出在MATLAB中与fir1函数可以非常方便的进行FIR滤波器的设计。

使用MATLAB设计FIR滤波器

使用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滤波器系数。

Matlab设计FIR数字滤波器

Matlab设计FIR数字滤波器

FIR数字滤波器专业:学号:XX:一课题目的:1学会使用Matlab的各项功能。

2学会把自己在课堂上学习的知识运用到实践当中。

3了解利用Matlab设计FIR数字滤波器的基本方法。

4在课程设计的过程中掌握程序编译及软件设计的基本方法。

5提高自己对于新知识的学习能力及进行实际操作的能力。

二课题要求:在信号处理过程中所处理的信号往往混有噪音,从接受到的信号中消除或减弱噪音是信号处理过程中十分重要的问题。

根据有用信号和噪音的不同特性,提取有用信号的过程称为滤波,实现滤波功能的系统称为滤波器。

而数字滤波器又是滤波器中运用极为广泛的一种滤波器。

数值滤波技术是数字信号处理的一个重要组成部分,滤波器的设计是信号处理的核心问题之一。

FIR数字滤波器在保证幅度特性满足技术要求的同时,很容易做到有严格的线性相位特性。

要求通过网络及各种资料解决实际问题设计一个符合要求的FIR数字滤波器。

三课题内容:数字滤波器和模拟滤波器有着相同的滤波概念,根据其频率响应特性可分为低通、高通、带通、带阻等类型。

与模拟滤波器相比,数字滤波器除了具有数字信号处理固有优点外,还有滤波精度高、稳定性好、灵活性强等优点。

在数字信号处理中,由于信号中经常混有各种复杂成分,所以很多信号分析都是基于滤波器而进行的,FIR数字滤波器在数字信号处理中发挥着重要作用,采用Matlab软件对FIR数字滤波器进行仿真设计,简化了设计中繁琐的计算。

设计中采用窗函数法,频率采样法和优化设计方法,通过调用Matlab函数设计FIR数字滤波器。

绘制出滤波器的特性图。

利用所设计的滤波器对多个频带叠加的正弦信号进行处理,对比滤波前后的信号时域和频域图,验证滤波器的效果。

最后录制一段语音信号,并对录制的信号进行采样和加噪,绘制出采样后语音信号的时域波形和频谱图,然后用所设计的滤波器对加噪后的信号进行滤波,绘制出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化。

利用MATLAB仿真软件系统结合窗函数法设计一个数字带通FIR滤波器

利用MATLAB仿真软件系统结合窗函数法设计一个数字带通FIR滤波器

目录目录 (1)摘要 (I)Abstract (II)1 原理说明 (1)1.1 数字滤波技术 (1)1.2 FIR滤波器 (2)1.3 窗函数 (2)2 滤波器设计 (4)2.1 滤波器设计要求 (4)2.2 设计函数的选取 (4)2.3 窗函数构造 (5)2.4 设计步骤 (8)2.5 设计方法 (8)3 滤波器测试 (15)3.1 滤波器滤波性能测试 (15)3.2 滤波器时延测量 (16)3.3 滤波器稳定性测量 (17)4 心得体会 (19)5 参考文献 (20)附件一: (21)附件二: (23)摘要Abstract1 原理说明随着信息时代的到来,数字信号处理已经成为一门极其重要的学科和技术,并且在通信、语音、图像、自动控制等众多领域得到了广泛的应用。

在数字信号处理中,数字滤波器占有极其重要的地位,它具有精度高、可靠性好、灵活性大等特点。

现代数字滤波器可以用软件或硬件两种方式来实现。

软件方式实现的优点是可以通过滤波器参数的改变去调整滤波器的性能。

MATLAB是一种面向科学和工程计算的语言,它集数值分析、矩阵运算、信号处理和图形显示于一体,具有编程效率高、调试手段丰富、扩充能力强等特点。

MATLAB的信号处理工具箱具有强大的函数功能,它不仅可以用来设计数字滤波器,还可以使设计达到最优化,是数字滤波器设计的强有力工具。

1.1 数字滤波技术数字滤波,就是通过一定的计算或判断程序减少干扰在有用信号中的比重,故实质上是一种程序滤波。

与此对应的就是模拟滤波,由于模拟滤波牵扯到的其他知识太多在此不详细介绍了,模拟滤波主要无源绿波(直接用电阻、电容、电感等不外接电源的元件组成的)与有源滤波(如运算放大器等需要外接电源组成的),其目的是将信号中的噪音和干扰滤去或者将希望得到的频率信号滤出为我所用。

数字滤波的出现克服了模拟滤波的很多不足,具有以下优点:A.是用程序实现的,不需要增加硬设备,所以可靠性高,稳定性好。

matlab的fir滤波器设计

matlab的fir滤波器设计

matlab的fir滤波器设计Matlab是一种常用的科学计算软件,可以广泛应用于信号处理领域。

其中一个常用的信号处理技术就是滤波器。

FIR滤波器是数字滤波器的一种,它具有线性相位特性和稳定性,并且在数字信号处理中应用非常广泛。

在Matlab中,设计FIR滤波器有多种方法,其中最常用的是窗函数法和最小二乘法。

窗函数法是基于理想滤波器的幅频响应,在频域上与希望的滤波器响应相乘的方式得到FIR滤波器系数。

而最小二乘法则是通过最小化滤波器输出与希望的输出之间的误差平方和来设计FIR滤波器。

在Matlab中,可以使用fir1函数实现FIR滤波器设计。

这个函数的输入参数包括滤波器阶数、截止频率、滤波器类型等。

例如,下面的代码可以实现一个低通FIR滤波器的设计:fs = 1000; % 采样频率fc = 100; % 截止频率N = 100; % 滤波器阶数h = fir1(N, fc/(fs/2), 'low'); % 低通FIR滤波器在上面的代码中,fs表示采样频率,fc表示截止频率,N表示滤波器阶数,h表示设计得到的FIR滤波器系数。

'low'表示设计的是低通滤波器,如果要设计高通、带通或带阻滤波器,可以将'low'换成'high'、'bandpass'或'bandstop'。

设计好FIR滤波器后,可以使用filter函数将滤波器应用于信号中。

例如,下面的代码可以将一个信号x通过上面设计得到的FIR 滤波器h进行滤波:y = filter(h, 1, x);在上面的代码中,h表示设计得到的FIR滤波器系数,x表示需要进行滤波的信号,y表示滤波后的信号。

'1'表示滤波器的分母系数为1,因为FIR滤波器的分母系数恒为1。

综上所述,Matlab的FIR滤波器设计方法包括窗函数法和最小二乘法,可以使用fir1函数实现滤波器设计,使用filter函数将滤波器应用于信号中。

实验11用MATLAB设计FIR数字滤波器综述

实验11用MATLAB设计FIR数字滤波器综述

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

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

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

二、实验内容及步骤2、选择合适的窗函数设计FIR 数字低通滤波器,要求: w p =0.2π,R p =0.05dB ; w s =0.3π,A s =40dB 。

描绘该滤波器的脉冲响应、窗函数及滤波器的幅频响应曲线和相频响应曲线。

分析:根据设计指标要求,并查表11-1,选择汉宁窗。

程序清单如下: function hd=ideal_lp(wc,N)wp=0.2*pi;ws=0.3*pi;deltaw=ws-wp; tao=(N-1)/2; n=[0:(N-1)];m=n-tao+eps; hd=sin(wc*m)./(pi*m);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);wp=0.2*pi;ws=0.3*pi;deltaw=ws-wp; wc=(ws+wp)/2;课程名称:数字信号处理 实验成绩: 指导教师:实 验 报 告院系: 信息工程学院 班级: 电信二班 学号: 姓名: 日期:N0=ceil(6.6*pi/deltaw);N=N0+mod(N0+1,2)windows=(hanning(N))';hd=ideal_lp(wc,N);b=hd.*windows;[db,mag,pha,grd,w]=freqz_m(b,1);n=0:N-1;dw=2*pi/1000;Rp=-(min(db(1:wp/dw+1))) %检验通带波动As=-round(max(db(ws/dw+1:501))) %检验最小阻带衰减subplot(2,2,1);stem(n,b);axis([0,N,1.1*min(b),1.1*max(b)]);title('实际脉冲响应'); xlabel('n');ylabel('h(n)');subplot(2,2,2);stem(n,windows);axis([0,N,0,1.1]);title('窗函数特性');xlabel('n');ylabel('wd(n)');subplot(2,2,3);plot(w/pi,db);axis([0,1,-80,10]);title('幅度频率响应');xlabel('频率(单位:\pi)');ylabel('H(e^{j\omega})');set(gca,'XTickMode','manual','XTick',[0,wp/pi,ws/pi,1]);set(gca,'YTickMode','manual','YTick',[-50,-20,-3,0]);grid subplot(2,2,4);plot(w/pi,pha);axis([0,1,-4,4]);title('相位频率响应');xlabel('频率(单位:\pi)');ylabel('\phi(\omega)');set(gca,'XTickMode','manual','XTick',[0,wp/pi,ws/pi,1]);set(gca,'YTickMode','manual','YTick',[-3.1416,0,3.1416,4]);gridN =67Rp =0.0706As = 44204060实际脉冲响应nh (n )窗函数特性nw d (n)0.20.31-50-20-30幅度频率响应频率(单位:π)H (e j ω)0.20.31-3.14163.14164相位频率响应频率(单位:π)φ(ω)3、用凯塞窗设计一个FIR 数字高通滤波器,要求: w p =0.3π,R p =0.1dB ;w s =0.2π,A s =50dB 。

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

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

一、引言数字滤波器是数字信号处理中至关重要的组成部分,它能够对数字信号进行滤波处理,去除噪音和干扰,提取信号中的有效信息。

其中,fir数字滤波器作为一种常见的数字滤波器类型,具有稳定性强、相位响应线性等特点,在数字信号处理领域得到了广泛的应用。

本文将基于matlab软件,探讨fir数字滤波器的设计原理、方法和实现过程,以期能够全面、系统地了解fir数字滤波器的设计流程。

二、fir数字滤波器的基本原理fir数字滤波器是一种有限长冲激响应(finite impulse response, FIR)的数字滤波器,其基本原理是利用线性相位特性的滤波器来实现对数字信号的筛选和处理。

fir数字滤波器的表达式为:$$y(n) = \sum_{k=0}^{M}h(k)x(n-k)$$其中,y(n)为输出信号,x(n)为输入信号,h(k)为滤波器的系数,M为滤波器的长度。

fir数字滤波器的频率响应特性由其系数h(k)决定,通过设计合适的系数,可以实现对不同频率成分的滤波效果。

三、fir数字滤波器的设计方法fir数字滤波器的设计方法主要包括窗函数法、频率抽样法、最小最大法等。

在matlab中,可以通过信号处理工具箱提供的fir1函数和firls函数等来实现fir数字滤波器的设计。

下面将分别介绍这两种设计方法的基本原理及实现步骤。

1. 窗函数法窗函数法是fir数字滤波器设计中最为常见的方法之一,其基本原理是通过对理想滤波器的频率响应进行窗函数加权来满足设计要求。

在matlab中,可以使用fir1函数实现fir数字滤波器的设计,其调用格式为:h = fir1(N, Wn, type)其中,N为滤波器的阶数,Wn为滤波器的截止频率,type为窗函数的类型。

通过调用fir1函数,可以灵活地设计出满足特定要求的fir数字滤波器。

2. 频率抽样法频率抽样法是fir数字滤波器设计中的另一种重要方法,其基本原理是在频域上对理想滤波器的频率响应进行抽样,并拟合出一个最优的滤波器。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

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

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

二、实验内容及步骤2、选择合适的窗函数设计FIR 数字低通滤波器,要求: w p =0.2π,R p =0.05dB ; w s =0.3π,A s =40dB 。

描绘该滤波器的脉冲响应、窗函数及滤波器的幅频响应曲线和相频响应曲线。

分析:根据设计指标要求,并查表11-1,选择汉宁窗。

程序清单如下: function hd=ideal_lp(wc,N)wp=0.2*pi;ws=0.3*pi;deltaw=ws-wp; tao=(N-1)/2; n=[0:(N-1)];m=n-tao+eps; hd=sin(wc*m)./(pi*m);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);wp=0.2*pi;ws=0.3*pi;deltaw=ws-wp; wc=(ws+wp)/2;课程名称:数字信号处理 实验成绩: 指导教师:实 验 报 告院系: 信息工程学院 班级: 电信二班 学号: 姓名: 日期:N0=ceil(6.6*pi/deltaw);N=N0+mod(N0+1,2)windows=(hanning(N))';hd=ideal_lp(wc,N);b=hd.*windows;[db,mag,pha,grd,w]=freqz_m(b,1);n=0:N-1;dw=2*pi/1000;Rp=-(min(db(1:wp/dw+1))) %检验通带波动As=-round(max(db(ws/dw+1:501))) %检验最小阻带衰减subplot(2,2,1);stem(n,b);axis([0,N,1.1*min(b),1.1*max(b)]);title('实际脉冲响应'); xlabel('n');ylabel('h(n)');subplot(2,2,2);stem(n,windows);axis([0,N,0,1.1]);title('窗函数特性');xlabel('n');ylabel('wd(n)');subplot(2,2,3);plot(w/pi,db);axis([0,1,-80,10]);title('幅度频率响应');xlabel('频率(单位:\pi)');ylabel('H(e^{j\omega})');set(gca,'XTickMode','manual','XTick',[0,wp/pi,ws/pi,1]);set(gca,'YTickMode','manual','YTick',[-50,-20,-3,0]);grid subplot(2,2,4);plot(w/pi,pha);axis([0,1,-4,4]);title('相位频率响应');xlabel('频率(单位:\pi)');ylabel('\phi(\omega)');set(gca,'XTickMode','manual','XTick',[0,wp/pi,ws/pi,1]);set(gca,'YTickMode','manual','YTick',[-3.1416,0,3.1416,4]);gridN =67Rp =0.0706As = 44204060实际脉冲响应nh (n )窗函数特性nw d (n)0.20.31-50-20-30幅度频率响应频率(单位:π)H (e j ω)0.20.31-3.14163.14164相位频率响应频率(单位:π)φ(ω)3、用凯塞窗设计一个FIR 数字高通滤波器,要求: w p =0.3π,R p =0.1dB ;w s =0.2π,A s =50dB 。

描绘该滤波器的脉冲响应、窗函数及滤波器的幅频响应曲线和相频响应曲线。

程序清单如下:function hd=ideal_lp(wc,N) tao=(N-1)/2; n=[0:(N-1)]; m=n-tao+eps; hd=sin(wc*m)./(pi*m);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);wp=0.3*pi;ws=0.2*pi;deltaw=wp-ws;N0=ceil(6.6*pi/deltaw);N=N0+mod(N0+1,2)windows=(kaiser(N,7.865))';wc=(ws+wp)/2;hd=ideal_lp(pi,N)-ideal_lp(wc,N);b=hd.*windows;[db,mag,pha,grd,w]=freqz_m(b,1);n=0:N-1;dw=2*pi/1000;Rp=-(min(db(wp/dw+1:501))) %检验通带波动As=-round(max(db(1:ws/dw+1))) %检验最小阻带衰减subplot(2,2,1);stem(n,b);axis([0,N,1.1*min(b),1.1*max(b)]);title('实际脉冲响应'); xlabel('n');ylabel('h(n)');subplot(2,2,2);stem(n,windows);axis([0,N,0,1.1]);title('窗函数特性');xlabel('n');ylabel('wd(n)');subplot(2,2,3);plot(w/pi,db);axis([0,1,-100,2]);title('幅度频率响应');xlabel('频率(单位:\pi)');ylabel('H(e^{j\omega})'); set(gca,'XTickMode','manual','XTick',[0,ws/pi,wp/pi,1]); set(gca,'YTickMode','manual','YTick',[,-40-20,-3,0]);grid subplot(2,2,4);plot(w/pi,pha);axis([0,1,-4,4]);title('相位频率响应');xlabel('频率(单位:\pi)');ylabel('\phi(\omega)');set(gca,'XTickMode','manual','XTick',[0,ws/pi,wp/pi,1]); set(gca,'YTickMode','manual','YTick',[-pi,0,pi]);gridN =67Rp = 0.2321As =32204060实际脉冲响应nh (n )窗函数特性nw d (n)0.20.31-60-30幅度频率响应频率(单位:π)H (e j ω)0.20.31-3.14163.1416相位频率响应频率(单位:π)φ(ω)4、选择合适的窗函数设计一个FIR 数字带通滤波器,要求:f p1=3.5kHz ,f p2=6.5kHz ,R p =0.05dB ;f s1=2.5kHz ,f s2=7.5kHz ,A s =60dB 。

滤波器采样频率Fs=20kHz 。

描绘该滤波器的脉冲响应、窗函数及滤波器的幅频响应曲线和相频响应曲线。

分析:根据设计指标应选择布莱克曼窗。

程序清单如下: 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); fp1=3.5;fp2=6.5; fs1=2.5;fs2=7.5; Fs=20;ws1=fs1/(Fs/2)*pi;ws2=fs2/(Fs/2)*pi;wp1=fp1/(Fs/2)*pi;wp2=fp2/(Fs/2)*pi;deltaw=wp1-ws1;N0=ceil(11*pi/deltaw);N=N0+mod(N0+1,2) %为实现FIR类型1偶对称滤波器,应确保N为奇数windows=blackman(N);wc1=(ws1+wp1)/2/pi;wc2=(ws2+wp2)/2/pi;b=fir1(N-1,[wc1,wc2],windows);[db,mag,pha,grd,w]=freqz_m(b,1);n=0:N-1;dw=2*pi/1000;Rp=-(min(db(wp1/dw+1:wp2/dw+1))) %检验通带波动ws0=[1:ws1/dw+1,ws2/dw+1:501];%建立阻带频率样点数组As=-round(max(db(ws0))) %检验最小阻带衰减subplot(2,2,1);stem(n,b);axis([0,N,1.1*min(b),1.1*max(b)]);title('实际脉冲响应');xlabel('n');ylabel('h(n)');subplot(2,2,2);stem(n,windows);axis([0,N,0,1.1]);title('窗函数特性');xlabel('n');ylabel('wd(n)');subplot(2,2,3);plot(w/pi,db);axis([0,1,-150,10]);title('幅度频率响应');xlabel('频率(单位:\pi)');ylabel('H(e^{j\omega})');set(gca,'XTickMode','manual','XTick',[0,fs1,fp1,fp2,fs2,500]);set(gca,'YTickMode','manual','YTick',[-150,-40,-3,0]);gridsubplot(2,2,4);plot(w/pi,pha);axis([0,1,-4,4]);title('相位频率响应');xlabel('频率(单位:\pi)');ylabel('\phi(\omega)');set(gca,'XTickMode','manual','XTick',[0,fs1,fp1,fp2,fs2,500]);set(gca,'YTickMode','manual','YTick',[-pi,0,pi]);gridN =111Rp =0.0034As =7450100实际脉冲响应nh (n )窗函数特性nw d (n )-150-40-30幅度频率响应频率(单位:π)H (e j ω)-3.14163.1416相位频率响应频率(单位:π)φ(ω)5、选择合适的窗函数设计一个FIR 数字带阻滤波器,要求:f p1=1kHz ,f p2=4.5kHz ,R p =0.1dB ;f s1=2kHz ,f s2=3.5kHz ,A s =40dB 。

相关文档
最新文档