实验6FIR滤波器设计

合集下载

FIR滤波器设计实验报告

FIR滤波器设计实验报告

FIR滤波器设计实验报告实验报告:FIR滤波器设计一、实验目的:本实验旨在通过设计FIR滤波器,加深对数字信号处理中滤波器原理的理解,掌握FIR滤波器的设计方法和调试技巧。

二、实验原理:在窗函数法中,常用的窗函数有矩形窗、三角窗、汉明窗和黑曼窗等。

根据实际需求选择适当的窗口函数,并通过将窗口函数应用到理想低通滤波器的冲激响应中,得到FIR滤波器的冲激响应。

三、实验步骤:1.确定滤波器的阶数和截止频率。

2.选择适当的窗口函数,如汉明窗。

3.计算出理想低通滤波器的冲激响应。

4.将选定的窗口函数应用到理想低通滤波器的冲激响应中。

5.得到FIR滤波器的冲激响应。

四、实验结果:假设要设计一个阶数为10的FIR滤波器,截止频率为800Hz,采样频率为1600Hz。

1.选择汉明窗作为窗口函数。

2.根据采样频率和截止频率计算出理想低通滤波器的冲激响应。

假设截止频率为f_c,则理想低通滤波器的冲激响应为:h(n) = 2f_c * sinc(2f_c * (n - (N-1)/2))其中,sinc(x)为正弦函数sin(x)/x。

3.将汉明窗应用到理想低通滤波器的冲激响应中,得到FIR滤波器的冲激响应。

具体计算过程如下:h(n) = w(n) * h_ideal(n)其中,w(n)为汉明窗:w(n) = 0.54 - 0.46 * cos(2πn/(N-1))h_ideal(n)为理想低通滤波器的冲激响应。

4.计算得到FIR滤波器的冲激响应序列。

五、实验总结:本次实验通过设计FIR滤波器,加深了对数字信号处理中滤波器原理的理解。

掌握了FIR滤波器的设计方法和调试技巧。

通过设计阶数为10的FIR滤波器,截止频率为800Hz,采样频率为1600Hz的实例,了解了窗函数法设计FIR滤波器的具体步骤,并得到了滤波器的冲激响应。

【备注】以上内容仅为参考,具体实验报告内容可能根据实际情况有所调整。

数字信号处理实验FIR数字滤波器的设计

数字信号处理实验FIR数字滤波器的设计

数字信号处理实验:FIR数字滤波器的设计1. 引言数字滤波器是数字信号处理的关键技术之一,用于对数字信号进行滤波、降噪、调频等操作。

FIR (Finite Impulse Response) 数字滤波器是一种常见的数字滤波器,具有线性相应和有限的脉冲响应特性。

本实验旨在通过设计一个FIR数字滤波器来了解其基本原理和设计过程。

2. FIR数字滤波器的基本原理FIR数字滤波器通过对输入信号的每一个样本值与滤波器的冲激响应(滤波器的系数)进行线性加权累加,来实现对信号的滤波。

其数学表达式可以表示为:y(n) = b0 * x(n) + b1 * x(n-1) + b2 * x(n-2) + ... + bN * x(n-N)其中,y(n)表示滤波器的输出,x(n)表示滤波器的输入信号,b0~bN表示滤波器的系数。

FIR数字滤波器的脉冲响应为有限长度的序列,故称为有限冲激响应滤波器。

3. FIR数字滤波器的设计步骤FIR数字滤波器的设计主要包括以下几个步骤:步骤1: 确定滤波器的阶数和截止频率滤波器的阶数决定了滤波器的复杂度和性能,而截止频率决定了滤波器的通带和阻带特性。

根据实际需求,确定滤波器的阶数和截止频率。

步骤2: 选择滤波器的窗函数窗函数是FIR滤波器设计中常用的一种方法,可以通过选择不同的窗函数来实现不同的滤波器特性。

常用的窗函数有矩形窗、汉宁窗、汉明窗等。

根据实际需求,选择合适的窗函数。

步骤3: 计算滤波器的系数根据选择的窗函数和滤波器的阶数,使用相应的公式或算法计算滤波器的系数。

常见的计算方法有频率采样法、窗函数法、最小二乘法等。

步骤4: 实现滤波器根据计算得到的滤波器系数,可以使用编程语言或专用软件来实现滤波器。

步骤5: 评估滤波器性能通过输入测试信号,观察滤波器的输出结果,评估滤波器的性能和滤波效果。

常见评估指标有滤波器的幅频响应、相频响应、群延迟等。

4. 实验步骤本实验将以Matlab软件为例,演示FIR数字滤波器的设计步骤。

FIR滤波器设计实验报告

FIR滤波器设计实验报告

FIR滤波器设计实验报告实验目的:学习和掌握有限脉冲响应(FIR)滤波器的设计方法,了解数字滤波器的原理和实现。

实验器材:计算机、Matlab软件、FIR滤波器设计工具。

实验原理:1.确定滤波器的规格:包括通带频率、阻带频率、通带纹波、阻带衰减等参数。

2. 根据滤波器规格选择合适的FIR滤波器设计方法:常见的设计方法有窗函数法、频域近似法、Remez算法等。

3.根据设计方法计算FIR滤波器的系数:根据设计方法的不同,计算滤波器的系数也有所区别。

4.对FIR滤波器进行验证和优化:可以通过频率响应、幅频特性等指标对滤波器进行调整,并进行验证。

实验步骤:1.确定滤波器规格:设置通带频率为3kHz,阻带频率为5kHz,通带纹波为0.01dB,阻带衰减为40dB。

2.选择窗函数法进行FIR滤波器设计。

3.根据滤波器规格计算滤波器的阶数。

4.根据阶数选择合适的窗函数。

5.计算FIR滤波器的系数。

6.通过绘制滤波器的频率响应曲线进行验证。

7.分析滤波器的性能,并对滤波器进行优化。

实验结果:根据以上步骤进行设计和计算,得到了FIR滤波器的系数,利用Matlab绘制了滤波器的频率响应曲线。

分析和讨论:根据频率响应曲线,可以看出滤波器在通带频率范围内有较好的衰减效果,滤波器的阻带频率范围内衰减也满足要求。

但是在通带和阻带之间存在一定的过渡带,可能会对信号造成一部分的失真。

因此,可以考虑进一步优化滤波器的设计,使其在通带和阻带之间的过渡带更加平滑,减小失真的影响。

结论:通过本次实验,我们学习并掌握了FIR滤波器的设计方法,了解了数字滤波器的原理和实现。

在实际应用中,可以根据需要选择合适的FIR滤波器设计方法,并根据滤波器的规格进行计算和调整。

通过不断优化和验证,可以得到满足要求的FIR滤波器,实现对数字信号的滤波处理。

实验六用窗函数法设计FIR滤波器分析解析

实验六用窗函数法设计FIR滤波器分析解析

实验六用窗函数法设计FIR滤波器分析解析一、引言数字滤波器是数字信号处理中的重要组成部分。

滤波器可以用于去除噪声、调整频率响应以及提取感兴趣的信号。

有许多方法可以设计数字滤波器,包括窗函数法、频域法和优化法等。

本实验将重点介绍窗函数法设计FIR滤波器的原理和过程。

二、窗函数法设计FIR滤波器窗函数法是设计FIR滤波器的一种常用方法。

其基本原理是将滤波器的频率响应与理想滤波器的频率响应进行乘积。

理想滤波器的频率响应通常为矩形函数,而窗函数则用于提取有限长度的理想滤波器的频率响应。

窗函数的选择在FIR滤波器的设计中起着重要的作用。

常用的窗函数包括矩形窗、汉宁窗、汉明窗、布莱克曼窗等。

对于每种窗函数,都有不同的特性和性能指标,如主瓣宽度、副瓣抑制比等。

根据不同的应用需求,可以选择合适的窗函数。

窗函数法设计FIR滤波器的具体步骤如下:1.确定滤波器的阶数N。

阶数N决定了滤波器的复杂度,一般情况下,阶数越低,滤波器的简单度越高,但频率响应的近似程度也会降低。

2.确定滤波器的截止频率。

根据应用需求,确定滤波器的截止频率,并选择合适的窗函数。

3.根据窗函数长度和截止频率计算理想滤波器的频率响应。

根据所选窗函数的特性,计算理想滤波器的频率响应。

4.根据理想滤波器的频率响应和窗函数的频率响应,得到所需的FIR滤波器的频率响应。

将理想滤波器的频率响应与窗函数的频率响应进行乘积,即可得到所需滤波器的频率响应。

5.对所得到的频率响应进行逆傅里叶变换,得到时域的滤波器系数。

6.实现滤波器。

利用所得到的滤波器系数,可以通过卷积运算实现滤波器。

三、实验结果与分析本实验以Matlab软件为平台,利用窗函数法设计了一个低通滤波器。

滤波器的阶数为16,截止频率为500Hz,采样频率为1000Hz,选择了汉宁窗。

根据上述步骤,计算得到了所需的滤波器的频率响应和时域的滤波器系数。

利用这些系数,通过卷积运算,实现了滤波器。

为了验证滤波器的性能,将滤波器应用于输入信号,观察输出信号的变化。

FIR数字滤波器设计实验_完整版

FIR数字滤波器设计实验_完整版

FIR数字滤波器设计实验_完整版本实验旨在设计一种FIR数字滤波器,以滤除信号中的特定频率成分。

下面是完整的实验步骤:材料:-MATLAB或其他支持数字信号处理的软件-计算机-采集到的信号数据实验步骤:1.收集或生成需要滤波的信号数据。

可以使用外部传感器采集数据,或者在MATLAB中生成一个示波器信号。

2. 在MATLAB中打开一个新的脚本文件,并导入信号数据。

如果你是使用外部传感器采集数据,请将数据以.mat文件的形式保存,并将其导入到MATLAB中。

3.对信号进行预处理。

根据需要,你可以对信号进行滤波、降噪或其他预处理操作。

这可以确保信号数据在输入FIR滤波器之前处于最佳状态。

4.确定滤波器的设计规范。

根据信号的特性和要滤除的频率成分,确定FIR滤波器的设计规范,包括滤波器的阶数、截止频率等。

你可以使用MATLAB中的函数来帮助你计算滤波器参数。

5. 设计FIR滤波器。

使用MATLAB中的fir1函数或其他与你所使用的软件相对应的函数来设计满足你的规范条件的FIR滤波器。

你可以选择不同的窗函数(如矩形窗、汉宁窗等)来平衡滤波器的频域和时域性能。

6. 对信号进行滤波。

将设计好的FIR滤波器应用到信号上,以滤除特定的频率成分。

你可以使用MATLAB中的conv函数或其他相应函数来实现滤波操作。

7.分析滤波效果。

将滤波后的信号与原始信号进行比较,评估滤波效果。

你可以绘制时域图、频域图或其他特征图来分析滤波效果。

8.优化滤波器设计。

如果滤波效果不理想,你可以调整滤波器设计参数,重新设计滤波器,并重新对信号进行滤波。

这个过程可能需要多次迭代,直到达到最佳的滤波效果。

9.总结实验结果。

根据实验数据和分析结果,总结FIR滤波器设计的优点和缺点,以及可能的改进方向。

通过完成以上实验步骤,你将能够设计并应用FIR数字滤波器来滤除信号中的特定频率成分。

这对于许多信号处理应用都是非常重要的,如音频处理、图像处理和通信系统等。

fir滤波器设计实验报告

fir滤波器设计实验报告

fir滤波器设计实验报告一、实验目的本次实验的目的是设计FIR滤波器,从而实现信号的滤波处理。

二、实验原理FIR滤波器是一种数字滤波器,它采用有限长的冲激响应滤波器来实现频率选择性的滤波处理。

在FIR滤波器中,系统的输出只与输入和滤波器的系数有关,不存在反馈环路,因此具有稳定性和线性相位的特性。

FIR滤波器的设计最常采用Window法和最小二乘法。

Window法是指先对理想滤波器的频率特性进行窗函数的处理,再通过离散傅里叶变换来得到滤波器的时域响应。

最小二乘法则是指采用最小二乘法来拟合理想滤波器的频率特性。

本次实验采用的是Window法。

三、实验步骤1.设计滤波器的频率响应特性:根据实际需要设计出需要的滤波器的频率响应特性,通常采用理想滤波器的底通、高通、带通、带阻等特性。

2.选择窗函数:根据设计的滤波器的频率响应特性选择相应的窗函数,常用的窗函数有矩形窗、汉宁窗、汉明窗等。

3.计算滤波器的时域响应:采用离散傅里叶变换将设计的滤波器的频率响应特性转化为时域响应,得到滤波器的冲激响应h(n)。

4.归一化:将得到的滤波器的冲激响应h(n)进行归一化处理,得到单位加权的滤波器系数h(n)。

5.实现滤波器的应用:将得到的滤波器系数h(n)应用于需要滤波的信号中,通过卷积的方式得到滤波后的信号。

四、实验结果以矩形窗为例,设计一阶低通滤波器,截止频率为300Hz,采样频率为8000Hz,得到的滤波器系数为:h(0)=0.0025h(1)=0.0025滤波效果良好,经过滤波后的信号频率响应相对于滤波前有较明显的截止效应。

五、实验总结通过本次实验,我们掌握了FIR滤波器的设计方法,窗函数的选择和离散傅里叶变换的应用,使我们能够更好地处理信号,实现更有效的信号滤波。

在日常工作和学习中,能够更好地应用到FIR滤波器的设计和应用,提高信号处理的精度和效率。

实验六用窗函数设计FIR滤波器

实验六用窗函数设计FIR滤波器

实验六用窗函数设计FIR滤波器一、引言数字滤波器是用于处理数字信号的重要工具,而FIR(Finite Impulse Response)滤波器是其中一类常见的滤波器。

在FIR滤波器中,输出信号的每个样本值仅依赖于输入信号在过去固定时间窗口内的样本值。

窗函数则是用于设计FIR滤波器的一种常见方法。

本实验将介绍如何用窗函数设计FIR滤波器,并通过一系列实验验证其性能。

二、实验目的1.了解FIR滤波器的原理和窗函数设计方法。

2.利用MATLAB工具进行FIR滤波器设计与性能评估。

3.分析不同窗函数对FIR滤波器的影响。

三、窗函数设计方法在设计FIR滤波器时,可以通过选择不同的窗函数来实现不同的频率响应。

常见的窗函数有矩形窗、汉宁窗、汉明窗、布莱克曼窗等。

在本实验中,我们将以汉宁窗为例进行讲解。

1.首先确定滤波器的截止频率和通带误差。

2.根据通带误差和滤波器的截止频率计算阶数。

3.根据阶数选择合适大小的窗口长度。

4.选择合适的窗函数,如汉宁窗。

5.计算窗函数的系数,并与理想滤波器的冲击响应相乘得到最终的滤波器系数。

四、实验步骤1.确定滤波器参数:截止频率、通带误差等。

2.根据通带误差和截止频率计算滤波器的阶数。

3.选择合适大小的窗口长度,通常选择大于滤波器阶数的2倍。

4.选择窗函数,如汉宁窗,计算窗函数的系数。

5.根据窗函数系数和截止频率计算滤波器的系数。

6.绘制滤波器的频率响应曲线。

7.利用设计好的FIR滤波器对输入信号进行滤波,并观察滤波效果。

五、实验结果与分析在本实验中,我们选择了截止频率为1kHz的低通滤波器。

首先计算滤波器的阶数,假设通带误差为0.01,根据公式可得N=3.32/((截止频率*通带误差)/采样频率)≈60。

我们选择窗口长度为120,即滤波器的阶数的两倍。

接下来选择汉宁窗作为窗函数,并计算其系数。

最后通过窗函数系数和截止频率计算得到滤波器的系数。

实验采用不同窗函数设计的FIR滤波器进行滤波,观察不同窗函数对滤波器性能的影响。

实验六 有限冲激响应(FIR)数字滤波器的设计

实验六  有限冲激响应(FIR)数字滤波器的设计

实验报告一、实验目的1.掌握用窗函数法设计FIR 数字滤波器的原理与方法;2.熟悉线性相位FIR 数字滤波器特性;3.了解各种窗函数对滤波特性的影响。

4.加深对数字滤波器的常用指标和设计过程的理解。

二、实验原理低通滤波器的常用指标:P P P for H Ω≤Ω+≤Ω≤-,1)(1δδπδ≤Ω≤Ω≤ΩS S for H ,)(通带边缘频率P Ω,阻带边缘频率S Ω ,通带起伏P δ,通带峰值起伏])[1(log 2010dB p p δα--=,阻带起伏s δ,最小阻带衰减])[(log 2010dB s S δα-=。

数字滤波器有IIR 和FIR 两种类型,它们的特点和设计方法不同。

在Matlab 中,可以用b=fir1(N,Wn,’ftype’,taper) 等函数辅助设计FIR 数字滤波器。

N 代表滤波器阶数;Wn 代表滤波器的截止频率(归一化频率),当设计带通和带阻滤波器时,Wn 为双元素相量;ftype 代表滤波器类型,如’high ’高通,’stop ’带阻等;taper 为窗函数类型,默认为海明窗,窗系数需要实现用窗函数blackman, hamming,hanning chebwin, kaiser 产生。

三、实验设备微型计算机、Matlab7.0教学版。

S PP SPassband StopbandTransition bandFig 1 Typical magnitudespecification for a digital LPF四、实验内容1.编制能产生矩形窗、海明窗的窗函数子程序;2.编写主程序,用不同窗设计线性相位低通FIR数字滤波器;3.对结果进行分析。

五、实验数据1.用Matlab软件编写的实验程序1(采用矩形窗)为:图1 用Matlab软件编写的实验程序1(采用矩形窗)实验结果:①. 振幅、相位:图2 振幅、相位波形图(采用矩形窗)②. 输入、输出信号:图3 输入、输出信号波形图(采用矩形窗)2.用Matlab软件编写的实验程序2(采用海明窗)为:图4 用Matlab软件编写的实验程序2(采用海明窗)说明:程序中第11行程序右边的注释应为“%采用海明窗”。

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

课程编号实验项目序号本科学生实验卡和实验报告信息科学与工程学院通信工程专业2013级1301班课程名称:数字信号处理实验项目:FIR滤波器设计2015~~2016学年第二学期学号:0104_ 姓名:__ _王少丹_ __ 专业年级班级: ____通信1301_________四合院___ 实验室组别________ 实验日期 __2016 年_ 6__ 月___12_ 日(2) 求滤波器的单位抽样响应、频率响应,并绘制波形。

e. 设计FIR 数字带通滤波器,技术指标为:下阻带边缘:ωst1=0.2π,δs1=20dB,下通带边缘:ωp1=0.4π,δp1=1dB;上通带边缘:ωp2=0.6π,δp1=1dB,上阻带边缘:ωst2=0.8π,δs2=20dB;(1) 通过技术指标,选择一种窗函数进行设计;(2) 求滤波器的单位抽样响应、频率响应,并绘制波形。

f. 设计FIR 数字高通滤波器,技术指标为:通带截止频率为ωp=15π/27,阻带截止频率为ωst=11π/27,通带最大衰减为δ1=2.5dB,阻带最小衰减为δ2=55dB。

(1) 通过技术指标,选择一种窗函数进行设计;(2) 求滤波器的单位抽样响应、频率响应,并绘制波形。

系统一:g. 设计FIR 数字高通滤波器,技术指标为:通带截止频率为ωp=0.6π,阻带截止频率为ωst=0.4π,通带最大衰减为δ1=0.25dB,阻带最小衰减为δ2=40dB。

(1) 通过技术指标,选择一种窗函数进行设计;(2) 求滤波器的单位抽样响应、频率响应,并绘制波形。

h. 滤波器的技术指标为:通带截止频率为ωp=0.6π,阻带截止频率为ωst=0.4π,通带最大衰减为δ1=0.25dB,阻带最小衰减为δ2=40dB。

(1) 通过技术指标,选择一种窗函数设计一个具有π/2 相移的FIR 高通滤波器;(2) 求滤波器的单位抽样响应、频率响应,并绘制波形。

i. 设计FIR 数字带阻滤波器,其技术指标为:低端阻带边缘:ωst1=0.4π,δs1=40dB,低端通带边缘:ωp1=0.2π,δp1=1dB;高端通带边缘:ωp2=0.8π,δp1=1dB,高端阻带边缘:ωst2=0.6π,δs2=40dB;(1) 通过技术指标,选择一种窗函数进行设计;(2) 求滤波器的单位抽样响应、频率响应,并绘制波形。

FIR 滤波器的单位抽样响应为h(n)=1/9{},编制MATLAB 程序求系统的频率采样型结构的系数,并画出频率抽样型结构。

m. 一个理想差分器的频率响应为:用长度为21 的汉宁窗设计一个数字FIR 差分器,并绘制其时域和频率的响应波形。

n. 利用汉宁窗设计一个长度为25 的数字希尔伯特变换器,并绘制它的时域和频域的响应波形。

p. FIR 数字低通滤波器的技术指标为:ωp=0.2π,ωst=0.3π,δ1=0.25dB,δ2=50dB。

利用频率采样方法设计FIR 数字滤波器,并绘制滤波器的单位冲激响应、幅度频率响应的波形。

q. 用窗函数法设计一个线性相位的FIR 数字低通滤波器,其技术指标为:ωwp = 0.2*pi;ws = 0.4*pi;tr_width = ws-wp;M = ceil(6.6*pi/tr_width)+1;n = [0:1:M-1];wc = (ws+wp)/2;hd = ideal_lp(wc,M);w_ham = (hamming(M))';h = hd.*w_ham;[db,mag,pha,H,w] = freqz_m3(h,[1]);delta_w = 2*pi/1000;Rp = -(min(db(1:1:wp/delta_w+1)));As = -round(max(db(ws/delta_w+1:1:501)));figure(1)subplot(221)stem(n,hd);title('Ideal Impulse Rresponse')axis([0 M-1 -0.1 0.3]);xlabel('n');ylabel('hd(n)')subplot(222)stem(n,w_ham);title('Hamming Window')axis([0 M-1 0 1.1]);xlabel('n');ylabel('w(n)')subplot(223)stem(n,h);title('Actual Impuse Response')axis([0 M-1 -0.1 0.3]);xlabel('n');ylabel('h(n)')subplot(224)plot(w/pi,db);title('Magnitude Response in db');gridaxis([0 1 -100 10]);xlabel('frequence in \pi unit');ylabel('decibels') %solution of problem (b)Rn = stepseq(0,0,9)n = 0:1:9dw = w(2)-(1)w = [-fliplr(w),w(2:501)]H = [fliplr(H),H(2:501)]xw = Rn*(exp(-j)).^(n'*w)answ = H.*xwRnn = answ*exp(-j).^(w'*n)*dw/(2*pi)figure(2)subplot(221)stem(n,Rn)xlabel('n');ylabel('Rn');title('input rectangle signal in T-domain')subplot(222)stem(w/pi,xw)xlabel('w/\pi');ylabel('Rw');title('input rectangle signal in F-domain') subplot(223)plot(w/pi,abs(answ))xlabel('w/\pi');ylabel('Magnitude of H(w)');title('output signal in F-domain after filteration')subplot(224)stem(n,abs(Rnn))xlabel('n');ylabel('Rnn');title('output signal in T-domain after filteration') M = 25; alpha = (M-1)/2; n = 0:M-1;hd = (2/pi)*((sin((pi/2)*(n-alpha)).^2)./(n-alpha)); hd(alpha+1)=0;w_han = (hann(M))'; h = hd .* w_han; [Hr,w,P,L] = Hr_Type3(h);subplot(2,2,1); stem(n,hd); title('Ideal Impulse Response')axis([-1 M -1.2 1.2]); xlabel('n'); ylabel('hd(n)');subplot(2,2,2); stem(n,w_han);title('Hann Window')axis([-1 M 0 1.2]); xlabel('n'); ylabel('w(n)')subplot(2,2,3); stem(n,h);title('Actual Impulse Response')axis([-1 M -1.2 1.2]); xlabel('n'); ylabel('h(n)')w = w'; Hr = Hr';w = [-fliplr(w), w(2:501)]; Hr = [-fliplr(Hr), Hr(2:501)];subplot(2,2,4);plot(w/pi,Hr); title('Amplitude Response');grid;xlabel('frequency in pi units'); ylabel('Hr'); axis([-1 1 -1.1 1.1]);M = 20; alpha = (M-1)/2; l = 0:M-1; wl = (2*pi/M)*l;Hrs = [1,1,1,zeros(1,15),1,1]; %Ideal Amp Res sampledHdr = [1,1,0,0]; wdl = [0,0.25,0.25,1]; %Ideal Amp Res for plottingk1 = 0:floor((M-1)/2); k2 = floor((M-1)/2)+1:M-1;angH = [-alpha*(2*pi)/M*k1, alpha*(2*pi)/M*(M-k2)];H = Hrs.*exp(j*angH); h = real(ifft(H,M));[db,mag,pha,grd,w] = freqz_m(h,1); [Hr,ww,a,L] = Hr_Type2(h);subplot(2,2,1);plot(wl(1:11)/pi,Hrs(1:11),'o',wdl,Hdr);axis([0,1,-0.1,1.1]); title('Frequency Samples: M=20')xlabel('frequency in pi units'); ylabel('Hr(k)');subplot(2,2,2); stem(l,h); axis([-1,M,-0.1,0.3])title('Impulse Response'); xlabel('n'); ylabel('h(n)');subplot(2,2,3); plot(ww/pi,Hr,wl(1:11)/pi,Hrs(1:11),'o');axis([0,1,-0.2,1.2]); title('Amplitude Response')xlabel('frequency in pi units'); ylabel('Hr(w)')subplot(2,2,4);plot(w/pi,db); axis([0,1,-60,10]); gridtitle('Magnitude Response'); xlabel('frequency in pi units');ylabel('Decibels');Wpl=0.2*pi;Wph=0.8*pi;Wsl=0.4*pi;Wsh=0.6*pi;tr_width=min((Wsl-Wpl),(Wph-Wsh));M=ceil(6.2*pi/tr_width)n=0:1:M-1;Wcl=(Wsl+Wpl)/2;Wch=(Wsh+Wph)/2;hd=ideal_bs(Wcl,Wch,M);w_ham=(hanning(M))';h=hd.*w_ham;[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('Ideal Impulse Rresponse')axis([0 M-1 -0.1 0.7]);xlabel('n');ylabel('hd(n)')subplot(222)stem(n,w_ham);title('Hamming Window')axis([0 M-1 0 1.1]);xlabel('n');ylabel('w(n)')subplot(223)stem(n,h);title('Actual Impuse Response')axis([0 M-1 -0.1 0.7]);xlabel('n');ylabel('h(n)')subplot(224)plot(w/pi,db);title('Magnitude Response in db');gridaxis([0 1 -100 10]);xlabel('frequence in \pi unit');ylabel('decibels'); clear allfigureWpl=0.2*pi;Wph=0.8*pi;Wsl=0.4*pi;Wsh=0.6*pi;tr_width=min((Wsl-Wpl),(Wph-Wsh));M=ceil(6.2*pi/tr_width)n=0:1:M-1;Wcl=(Wsl+Wpl)/2;Wch=(Wsh+Wph)/2;hd=ideal_bs(Wcl,Wch,M);w_ham=(hanning(M))';h=hd.*w_ham;[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('Ideal Impulse Rresponse')axis([0 M-1 -0.1 0.7]);xlabel('n');ylabel('hd(n)')subplot(222)stem(n,w_ham);title('Hamming Window')axis([0 M-1 0 1.1]);xlabel('n');ylabel('w(n)')subplot(223)stem(n,h);title('Actual Impuse Response')axis([0 M-1 -0.1 0.7]);xlabel('n');ylabel('h(n)')subplot(224)plot(w/pi,db);title('Magnitude Response in db');gridaxis([0 1 -100 10]);xlabel('frequence in \pi unit');ylabel('decibels'); figurews1=0.2*pi;wp1=0.35*pi;ws2=0.8*pi;wp2=0.65*pi;Ap=60;Rp=1;tr_width=min((wp1-ws1),(ws2-wp2));M=ceil(11*pi/tr_width);n=[0:1:M-1];wc1=(ws1+wp1)/2;wc2=(wp2+ws2)/2;hd=ideal_lp(wc2,M)-ideal_lp(wc1,M);w_bla=(blackman(M))';h=hd.*w_bla;[H,W]=freqz(h,1);subplot(2,2,1);stem(n,hd);title('ÀíÏëÂö³å³éÑù');subplot(2,2,2);stem(n,w_bla);title('²¼À³¿ËÂü´°');subplot(2,2,3);stem(n,h);title('ʵ¼ÊÂö³å³éÑù');subplot(2,2,4);plot(W/pi,20*log10(abs(H)));title('·ù¶ÈÏìÓ¦£¨db£©'); clear allfigurews1=0.2*pi;wp1=0.4*pi;ws2=0.8*pi;wp2=0.6*pi;Ap=60;Rp=1;tr_width=min((wp1-ws1),(ws2-wp2));M=ceil(11*pi/tr_width);n=[0:1:M-1];wc1=(ws1+wp1)/2;wc2=(wp2+ws2)/2;hd=ideal_lp(wc2,M)-ideal_lp(wc1,M);w_bla=( hamming(M))';h=hd.*w_bla;[H,W]=freqz(h,1);subplot(2,2,1);stem(n,hd);title('ÀíÏëÂö³å³éÑù');subplot(2,2,2);stem(n,w_bla);title('º£Ã÷´°');subplot(2,2,3);stem(n,h);title('ʵ¼ÊÂö³å³éÑù');subplot(2,2,4);plot(W/pi,20*log10(abs(H)));title('·ù¶ÈÏìÓ¦£¨db£©'); clear allfigurews1=0.2*pi;wp1=0.4*pi;ws2=0.8*pi;wp2=0.6*pi;Ap=20;Rp=1;tr_width=min((wp1-ws1),(ws2-wp2));M=ceil(11*pi/tr_width);n=[0:1:M-1];wc1=(ws1+wp1)/2;wc2=(wp2+ws2)/2;hd=ideal_lp(wc2,M)-ideal_lp(wc1,M);w_bla=( boxcar(M))';h=hd.*w_bla;[H,W]=freqz(h,1);subplot(2,2,1);stem(n,hd);title('ÀíÏëÂö³å³éÑù');subplot(2,2,2);stem(n,w_bla);title('¾ØÐδ°');subplot(2,2,3);stem(n,h);title('ʵ¼ÊÂö³å³éÑù');subplot(2,2,4);plot(W/pi,20*log10(abs(H)));title('·ù¶ÈÏìÓ¦£¨db£©'); clear allfigureAs=55;ws=11*pi/27;wp=15*pi/27;tr_width=wp-ws;%¼ÆËã¹ý¶É´øM=ceil((As-7.95)*2*pi/(14.36*tr_width)+1)+1; %°´¿-Ôó´°¼ÆËãÂ˲¨Æ÷µÄ³¤¶Èdisp(['Â˲¨Æ÷µÄ³¤¶È',num2str(M)]);beta=0.1102*(As-8.7); %¼ÆËã¿-Ôó´°µÄbetaÖµn=[0:1:M-1];disp(['ÏßÐÔÏàλÂ˲¨Æ÷',num2str(beta)]);w_kai=(kaiser(M,beta))';%Çó¿-Ôó´°º¯Êýwc=(ws+wp)/2;hd=ideal_lp(pi,M)-ideal_lp(wc,M); %ÇóÀíÏëÂö³åÏìÓ¦h=hd.*w_kai;[db,mag,pha,grd,w]=freqz_m(h,[1]);delta_w=2*pi/1000;Rp=-(min(db(wp/delta_w+1:1:501)));disp(['ʵ¼Êͨ´ø²¨¶¯Îª',num2str(Rp)]);As=-round(max(db(1:1:ws/delta_w+1)));disp(['×îС×è´øË¥¼õΪ?',num2str(As)]);subplot(2,2,1);stem(n,hd);title('ÀíÏëÂö³åÏìÓ¦');axis([0 M-1 -0.4 0.8]);ylabel('hd(n)');subplot(2,2,2);stem(n,w_kai);title('¿-Ôó´°');axis([0 M-1 0 1.1]);ylabel('wd(n)');subplot(2,2,3);stem(n,h);title('ʵ¼ÊÂö³åÏìÓ¦');axis([0 M-1 -0.4 0.8]);xlabel('n');ylabel('h(n)');subplot(2,2,4);plot(w/pi,db);title('?·ù¶ÈÏìÓ¦/dB');axis([0 1 -100 10]);grid;xlabel('ÒÔpiΪµ¥Î»µÄƵÂÊ');ylabel('?·Ö±´Êý/dB');clear allfigure%ÔÚmatlabÖÐн¨º¯Êýg£¬´úÂëÈçÏ£ºWp=0.6*pi;Ws=0.4*pi;tr_width=Wp-Ws;M=ceil(6.2*pi/tr_width);n=0:1:M-1;Wc=(Ws+Wp)/2;hd=ideal_lp(pi,M)-ideal_lp(Wc,M);w_ham=(hanning(M))';h=hd.*w_ham;[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('Ideal Impulse Rresponse')axis([0 M-1 -0.4 0.5]);xlabel('n');ylabel('hd(n)') subplot(222)stem(n,w_ham);title('Hamming Window')axis([0 M-1 0 1.1]);xlabel('n');ylabel('w(n)') subplot(223)stem(n,h);title('Actual Impuse Response')axis([0 M-1 -0.4 0.5]);xlabel('n');ylabel('h(n)')subplot(224)plot(w/pi,db);title('Magnitude Response in db');gridaxis([0 1 -100 10]);xlabel('frequence in \pi unit');ylabel('decibels'); clear allfigureWp=0.6*pi;Ws=0.4*pi;tr_width=Wp-Ws;M=ceil(6.2*pi/tr_width)n=0:1:M-1;Wc=(Ws+Wp)/2;hd=ideal_lp(pi,M)-ideal_lp(Wc,M);w_ham=(hanning(M));h=hd.*rot90(w_ham);[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)))figuresubplot(221)stem(n,hd);title('Ideal Impulse Rresponse')axis([0 M-1 -0.4 0.5]);xlabel('n');ylabel('hd(n)')subplot(222)stem(n,w_ham);title('Hamming Window')axis([0 M-1 0 1.1]);xlabel('n');ylabel('w(n)')subplot(223)stem(n,h);title('Actual Impuse Response')axis([0 M-1 -0.4 0.5]);xlabel('n');ylabel('h(n)')subplot(224)plot(w/pi,db);title('Magnitude Response in db');gridaxis([0 1 -100 10]);xlabel('frequence in \pi unit');ylabel('decibels'); %ÓÃHamming´°º¯ÊýÉè¼ÆFIRÊý×ÖÂ˲¨Æ÷figurewp=0.2*pi;ws=0.3*piN=61n=[0:1:N-1]wc=(ws+wp)/2;%ÀíÏëµÍͨÂ˲¨Æ÷hd=ideal_lp(wc,N);%ÀíÏëµÍͨµÄ³å¼¤ÏìÓ¦w_ham=(hamming(N))';h=hd.*w_ham;%FIRÂ˲¨Æ÷³å¼¤ÏìÓ¦[db,mag,pha,grd,w]=freqz_m(h,[1]);delta_w=2*pi/1000;Rp=-(min(db(1:1:wp/delta_w+1)))%ʵ¼ÊµÄͨ´øË¥¼õAs=-round(max(db(ws/delta_w+1:1:501)))%ʵ¼ÊµÄ×îС×è´øË¥¼õsubplot(221);stem(n,hd);title('ÀíÏë³å¼¤ÏìÓ¦')axis([0 N-1 -0.1 0.3]);xlabel('n');ylabel('hd(n)')subplot(222);stem(n,w_ham);title('hamming´°')axis([0 N-1 0 1.1]);xlabel('n');ylabel('w(n)');subplot(223);stem(n,h);title('ʵ¼Ê³å¼¤ÏìÓ¦')axis([0 N-1 -0.1 0.3]);xlabel('n');ylabel('h(n)')subplot(224);plot(w/pi,db);axis([0 0.8 -100 0]);xlabel('ÒÔPIΪµ¥Î»µÄƵÂÊ');ylabel('¶ÔÊý·ù¶È/db'); clear allfigure%ÓÃKaiser´°º¯ÊýÉè¼ÆFIRÊý×ÖÂ˲¨Æ÷wp=0.2*pi;ws=0.3*pi;As=50tr_width=ws-wpN=ceil((As-7.95)/(14.36*tr_width/(2*pi))+1)+1n=[0:1:N-1]beta=0.1102*(As-8.7)wc=(wp+ws)/2%ÀíÏëµÍͨµÄ½ØÖ¹ÆµÂÊhd=ideal_lp(wc,N)w_kai=(kaiser(N,beta))'h=hd.*w_kai[db,mag,pha,grd,w]=freqz_m(h,[1])delta_w=2*pi/1000Rp=-(min(db(1:1:wp/delta_w+1)))%?ʵ¼ÊµÄͨ´øË¥¼õAs=-round(max(db(ws/delta_w+1:1:501)))%ʵ¼ÊµÄ×îС×è´øË¥¼õsubplot(211);plot(w/pi,db);title('¿-É-´°·ù¶ÈÏìÓ¦(dB)');gridaxis([0 0.5 -100 0])ylabel('¶ÔÊý·ù¶È/db');xlabel('ÒÔ/piΪµ¥Î»µÄƵÂÊ')subplot(212);plot(w/pi,pha);title('ÏàλÏìÓ¦');gridaxis([0 0.5 -4 4])ylabel('Ïàλ');xlabel('ÒÔ/piΪµ¥Î»µÄƵÂÊ')figureh1=[-4,1,-1,-2,5,6,5,-2,-1,1,-4];M=length(h1);n=0:M-1;[A,w,type,tao]=amplres(h1);type subplot(2,1,1),stem(n,h1);title('³å¼¤ÏìÓ¦h1');ylabel('h(n)');xlabel('n');subplot(2,1,2),plot(w/pi,A);ylabel('A');xlabel('\pi');title('?·ùƵÏìÓ¦');figurerz=roots(h1)for i=1:8r(i)=1/rz(i);endr'zplane(h1,1);title('h1Á㼫µãͼ');clear allfigureh2=[-4,1,-1,-2,5,6,6,5,-2,-1,1,-4]; M=length(h2);n=0:M-1;[A,w,type,tao]=amplres(h2);type subplot(2,1,1),stem(n,h2);title('³å¼¤ÏìÓ¦h2');ylabel('h(n)');xlabel('n');subplot(2,1,2),plot(w/pi,A);ylabel('A');xlabel('\pi');title('·ùƵÏìÓ¦');figurerz=roots(h2)for i=1:8r(i)=1/rz(i);endr'zplane(h2,1);title('?h2Á㼫µãͼ');clear allfigureh3=[-4,1,-1,-2,5,0,-5,2,1,-1,4];M=length(h3);n=0:M-1;[A,w,type,tao]=amplres(h3);type subplot(2,1,1),stem(n,h3);title('³å¼¤ÏìÓ¦h3');ylabel('h(n)');xlabel('n');subplot(2,1,2),plot(w/pi,A);ylabel('A');xlabel('\pi');title('·ùƵÏìÓ¦?');figurerz=roots(h3)for i=1:8r(i)=1/rz(i);endr'zplane(h3,1);title('h3Á㼫µãͼ');clear allfigureh4=[-4,1,-1,-2,5,6,-6,-5,2,1,-1,4]; M=length(h4);n=0:M-1;[A,w,type,tao]=amplres(h4);type subplot(2,1,1),stem(n,h4);title('³å¼¤ÏìÓ¦h4');ylabel('h(n)');xlabel('n');subplot(2,1,2),plot(w/pi,A);ylabel('A');xlabel('\pi');title('?·ùƵÏìÓ¦?');figurerz=roots(h4)for i=1:8r(i)=1/rz(i);endr'zplane(h4,1);title('h4Á㼫µãͼ');h = [1,2,3,2,1];M = 5;n = (M-3)/2;a = 2*h(3-n)k = -500:500;K = 500;w = k*pi/K;p = a*cos(w*n);plot(w,p);ylabel('p(w)'); xlabel('w');function[db,mag,pha,H,w]=freqz_m3(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);endfunction [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);function [db, mag, pha, w]=freqz_m2(b,a);%Modified version of freqz subroutine[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);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';endfunction [Hr,w,c,L] = Hr_Type3(h);% Computes Amplitude response Hr(w) of a Type-3 LP FIR filter % -----------------------------------------------------------% [Hr,w,c,L] = Hr_Type3(h)% Hr = Amplitude Response% w = frequencies between [0 pi] over which Hr is computed % c = Type-3 LP filter coefficients% L = Order of Hr% h = Type-3 LP impulse response%M = length(h); L = (M-1)/2;c = [2*h(L+1:-1:1)]; n = [0:1:L];w = [0:1:500]'*pi/500; Hr = sin(w*n)*c';end。

相关文档
最新文档