FIR滤波器的设计与实现

合集下载

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滤波器的设计与实现在数字信号处理中,滤波技术被广泛应用于时域处理和频率域处理中,其作用是将设计信号减弱或抑制被一些不需要的信号。

根据滤波器的非线性抑制特性,基于FIR(Finite Impulse Response)滤波器的优点是稳定,易设计,可以得到较强的抑制滤波效果。

本实验分别通过MATLAB编程设计、实现、仿真以及分析了一阶低通滤波器和平坦通带滤波器。

实验步骤:第一步:设计一阶低通滤波器,通过此滤波器对波型进行滤波处理,分析其对各种频率成分的抑制效果。

为此,采用零极点线性相关算法设计滤波器,根据低通滤波器的特性,设计的低通滤波器的阶次为n=10,截止频率为0.2π,可以使设计的滤波器被称为一阶低通滤波器。

第二步:设计平坦通带滤波器。

仿真证明,采用兩個FIR濾波器組合而成的阻礙-提升系統可以實現自定義的總三值響應的設計,得到了自定義的總三值響應函數。

实验结果:1、通过MATLAB编程,设计完成了一阶低通滤波器,并通过实验仿真得到了一阶低通滤波器的频率响应曲线,证明了设计的滤波器具有良好的低通性能,截止频率为0.2π。

在该频率以下,可以有效抑制波形上的噪声。

2、设计完成平坦通带滤波器,同样分析其频率响应曲线。

从实验结果可以看出,此滤波器在此频率段内的通带性能良好,通带范围内的信号透过滤波器后,损耗较小,滞后较小,可以满足各种实际要求。

结论:本实验经过实验操作,设计的一阶低通滤波器和平坦通带滤波器具有良好的滤波特性,均已达到预期的设计目标,证明了利用非线性抑制特性实现FIR滤波处理具有较强的抑制滤波效果。

本实验既有助于深入理解FIR滤波器的设计原理,也为其他应用系统的设计和开发提供了指导,进而提高信号的处理水平和质量。

fir数字滤波器设计与软件实现数字信号处理实验原理

fir数字滤波器设计与软件实现数字信号处理实验原理

fir数字滤波器设计与软件实现数字信号处理实验原理FIR数字滤波器设计的基本原理是从理想滤波器的频率响应出发,寻找一个系统函数,使其频率响应尽可能逼近滤波器要求的理想频率响应。

为了实现这一目标,通常会采用窗函数法进行设计。

这种方法的基本思想是,将理想滤波器的无限长单位脉冲响应截断为有限长因果序列,并用合适的窗函数进行加权,从而得到FIR滤波器的单位脉冲响应。

在选择窗函数时,需要考虑其频率响应和幅度响应。

常见的窗函数包括矩形窗、三角形窗、汉宁窗、汉明窗、布莱克曼窗和凯泽窗等。

每种窗函数都有其特定的特性,如主瓣宽度、旁瓣衰减等。

根据实际需求,可以选择合适的窗函数以优化滤波器的性能。

在软件实现上,可以使用各种编程语言和信号处理库进行FIR滤波器的设计和实现。

例如,在MATLAB中,可以使用内置的`fir1`函数来设计FIR滤波器。

该函数可以根据指定的滤波器长度N和采样频率Fs,自动选择合适的窗函数并计算滤波器的系数。

然后,可以使用快速卷积函数`fftfilt`对输入信号进行滤波处理。

此外,还可以使用等波纹最佳逼近法来设计FIR数字滤波器。

这种方法的目标是找到一个最接近理想滤波器频率响应的实数序列,使得在所有可能的实
数序列中,该序列的误差平方和最小。

通过优化算法,可以找到这个最优序列,从而得到性能更优的FIR滤波器。

总的来说,FIR数字滤波器设计与软件实现数字信号处理实验原理是基于对理想滤波器频率响应的逼近和优化,通过选择合适的窗函数和算法,实现信号的滤波处理。

FIR滤波器的MATLAB设计与实现

FIR滤波器的MATLAB设计与实现

FIR滤波器的MATLAB设计与实现1、设计任务1、用MATLAB软件实现FIR滤波器;2、设计基于DSP的FIR滤波器硬件框图;3、了解用DSP实现FIR滤波器的关键问题;4、完成必要的软件流程图;2.前言在通信与电子信息当中,在对信号作分析与处理时,常会遇到有用信号叠加无用噪声的问题;这些噪声信号有的是与信号同时产生的,有的是在传输过程中混入的,在接收的信号中,必须消除或减弱噪声干扰,这是信号处理中十分重要的问题;根据有用信号与噪声的不同特性,消除或减弱噪声,提取有用信号的过程就称为滤波;滤波器的种类很多,实现方法也多种多样;随着数字技术的飞速发展,数字滤波理论也得到了长足的进步;因此,对数字滤波系统硬件实现的要求也越来越高,而软件模拟的方法不仅能及时地提供系统运行的信息,还可以随时改变系统结构从而验证全新的系统,所以软件仿真变得非常重要;Matlab 是具有很强的科学计算和图形显示功能的软件系统,可以对数字滤波器进行精确设计,并且方便地进行FFT 频谱分析与频谱图显示,从而对数字滤波器进行快速地检验和分析;本文讨论在MATLAB 平台下的FIR 数字滤波器设计与分析;DSP是一种实时、快速、特别适合于实现各种数字信号处理运算的微处理器;由于它由具有丰富的硬件资源、高速数据处理能力和强大的指令系统,而在通信、航空、航天、雷达、工业控制、网络及家用电器等各个领域得到广泛应用;DSP分为定点和浮点两种,本文以定点DSP芯片为例,讨论FIR滤波器实现的几个关键问题;所讨论的这些问题,在DSP系统设计中有实际的参考和应用价值;3.FIR 滤波器的原理与MATLAB仿真设计滤波器概述数字滤波在数字信号处理中占有重要的地位,是广泛使用的一种基本线性处理模块,它可以实现模拟器件很难达到的准确线性相位关系特性;数字滤波器分为无限冲激响应滤波器IIR和有限冲激响应滤波器FIR;由于FIR系统只有零点,因此这类滤波器不像IIR 滤波器那样容易取得比较好的通带与阻带衰减特性;要取得好的衰减特性,一般要求Hz 的阶次要高,即N 要大;FIR 滤波器有自己突出的优点,其一是系统总是稳定的,其二是易实现线性相位,其三是只要经过一定的时延,任何非因果有现场序列都能变成因果有限长序列,因而总能用因果系统来实现,其四是FIR 滤波器由于单位冲击响应是有限长的,因而可以用快速傅里叶变换算法来实现过滤信号,从而可以大大提高运算效率;由于FIR 滤波器在阶数相同的条件下运算速度比IIR 滤波器快,同时FIR 滤波器具有不含反馈环路、结构简单以及可以实现的严格线性相位等优点,因而在对相位要求比较严格的条件下,常常采用FIR 数字滤波器;目前常用的设计方法主要有窗函数法、频率取样法及等波纹逼近法;本文应用窗函数法设计FIR 数字低通滤波器;具体参数见表一;FIR 数字滤波器基本原理3.2.1窗函数法的基本思想先构造一个线性相位理想滤波器的频率响应()jw d H e ,然后用一个N 点的窗函数wn, (01)n N ≤≤-去截取理想滤波器的单位抽样响应()d h n 通常为无限长,从而得到具有线性相位的实际滤波器的有限长单位抽样响()()()d h n h n w n =;3.2.2基本方法1构造线性相位理想滤波器的频率响应()jw d H e ,为简单起见,若没有90°相移的特殊要求,一般选择滤波器具有第一类线性相位;2求理想滤波器的单位抽样响应()d h n ;3根据技术指标要求和4种形式的线性相位FIR 数字滤波器的特点,选择合适的窗函数wn 及其长度N,然后对()d h n 加窗函数截取,得到具有线性相应的实际FIR 数字滤波器的单位抽样相应()()()d h n h n w n =,(01)n N ≤≤-;4检验实际滤波器的频率响应()[()]jw H e DTFT h n =是否满足设计指标要求;3.2.3用窗函数设计FIR 滤波器的步骤1根据技术要求确定线性相位理想滤波器的频率响应()jw d H e ;2求理想滤波器的单位抽样响应()d h n ;3根据对过渡带及阻带衰减的要求,选择窗函数的形式,并估计窗口长度N,设待求滤波器的过渡带用△w 表示,它近似等于窗函数主瓣的宽度;4计算滤波器的单位抽样响应()()()d h n h n w n =5验算技术指标是否满足要求,设计出的滤波器频率响应用下式计算10()()N jwjwn n H e h n e --==∑ 3.2.4用窗函数设计FIR 滤波器设滤波器的通带截止频率为p f ,阻带截止频率为s f ,系统采样频率为samp f ,则其过渡带宽带为tw s p f f f =-,抽样周期为 2S sampT f π= 则过渡带数字角频率为22s p tw tw samp samp f f f w f f ππ-== 各种窗函数的过渡带宽可用x Nπ来表示,其中N 是滤波器阶数,x 是一个整数,对应于矩形窗,三角窗,汉宁窗,汉明窗,其值分别为4,8,8,8,所以滤波器的阶数N 可由下式求得2()samp tw s p xf x N w f f π==- 理想低通滤波器的冲击响应为()sin(())()c d n w n h n π-∂=-∂ 其中(1)2N -∂=, c w 是3dB 通带截止数字角频率,其值为 ()()2p s Sp s c samp f f T f f w f π++==加窗后的低通滤波器的冲击响应为()()()n d n n h h w =检验实际滤波器的频率响应()[()]jw H e DTFT h n =是否满足设计指标要求;表1 几种常见的窗函数对比例:用窗函数设计一个线性相位FIR低通滤波器,并满足性能要求:通带边界的归一化频率wp=,阻带边界的归一化频率ws=,阻带衰减不小于30dB,.通带波纹不大于3dB,假设一个信号,其中f1=5Hz,f2=20Hz.;信号的采样频率为50Hz.;并将原信号与通过滤波器的信号进行比较;由题意值,阻带衰减不小于30dB,根据表1,选取汉宁窗,因为汉宁窗的第一旁瓣相对主瓣衰减为31dB,满足滤波要求;wp=pi;ws=pi; %滤波器的边界频率wdelta=ws-wp; %过渡带宽度N=ceil8pi/wdelta; %根据过渡带宽等于表中汉宁窗函数的主瓣宽度求得滤波器所用常函数的最小带宽Wn=+pi/2; %截止频率取通带和阻带边界频率的中点b=fir1N,Wn/pi,hanningN+1;%设计FIR滤波器H,f=freqzb,1,512,50; %采用50Hz的采样频率绘出该滤波器的幅频和相频响应subplot2,1,1,plotf,20log10absH;xlabel'频率';ylabel'振幅';grid on;subplot2,1,2,plotf,180/piunwrapangleH;xlabel'频率';ylabel'相位';grid on;f1=3;f2=20;dt=;t=0:dt:3; %采样间隔和检测信号的时间序列x=sin2pif1t+cos2pif2t; %检测信号y=fftfiltb,x; %给出滤波器的输出figure2subplot2,1,1,plott,x,title'输入信号' %绘出输入信号subplot2,1,2,plott,y %绘出输出信号hold on;plot1 1N-1/2dt,ylim,'r' %绘出延迟到的时刻xlabel'时间',title'输出信号'图1 所设计滤波器的幅频响应上图和相频响应下图图2 所设计滤波器的输入和输出信号程序运行结果如图1,2.该例对应于50Hz的采样频率通带边界频率为fp=50/2=,fs=50/2=;有图1上图得,在小于的频段上,几乎看不到下降,即满足通带波纹不大于3dB的要求;在大于的频段上,阻带衰减大于30dB,满足题目要求;由图1下图得,在通带范围内,相位频率响应为一条直线,表面该滤波器为线性相位;图2给出了滤波器的输入信号和输出信号,输入信号包括3Hz和20Hz的信号,由图1可知,20Hz的信号不能通过该滤波器,通过滤波器后只剩下3Hz的信号;由于FIR滤波所需的阶数较高,信号延迟N-1/2也较大,输出信号前面有一段直线就是延迟造成的; 4.FIR滤波器的DSP实现FIR滤波器的DSP实现方案DSP与一般的微处理器相比有很大的区别;它所特有的结构和指令集合为解决复杂的数字信号处理问题提供了便利;在DSP处理器上实现FIR滤波时,一般使用实系数的FIR滤波器,其最基本的操作是MAC乘-累加指令;本文介绍在TMS320C54X上实现FIR 滤波器;C54X上有一个17位17位的乘法器和一个40位的加法器,用于在单周期内实现MAC运算;同时,C54X使用了先进的多总线体系结构,包含1条程序总线,3条数据总线及4条辅助地址总线;这些特殊的硬件结构使得C54X支持单指令循环,快循环,数据块搬移及循环寻址;所以这些都有利于高效的实现FIR滤波器;硬件框图图3 系统总体框图JTAGJoint Test Action Group联合测试行动小组是一种国际标准测试协议IEEE兼容,主要用于芯片内部测试;基本原理是在器件内部定义一个TAPTest Access Port&0;测试访问口通过专用的JTAG测试工具对内部节点进行测试;JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试;FLASE存储器具有性价比高,体积小,功耗低,可电擦写,使用方便等优点;在DSP应用系统中采用Flash存储器和固定数据是一种比较好的选择;SRAM静态存储器,读写速度快,但价格较高;适合于外部存放需要经常访问或更新的临时数据;RS232电平转换模块,将外部电平转换为适合DSP芯片内部要求的电平;图3是系统的总体框图;主要包括输入信号缓冲及调理电路、A/D 变换器、输入缓冲 FIFO、DSP及外围电路、输出缓冲FIFO、D/A变换器等几部分;其中DSP及外围电路包括程序存储器、串行口、显示及键盘接口等;串行口用于实现和PC机的通信,可以通过PC机对滤波器的控制;假定输入模拟信号为带限信号;该信号经缓冲和调理后经A/D变换进入输入缓冲FIFO,当 FIFO中的数据达到一定数量时产生中断,DSP将数据读入内存中并进行计算和处理,这里DSP主要实现FIR滤波运算;处理后的数据写入输出FIFO中,之后通过D/A变换后输出模拟信号;输出的信号是低通滤波后的结果;用DSP实现FIR滤波器的关键问题定点数的定标在滤波器的实现过程中,DSP所要处理的数可能是整数,也可能是小数或混合小数;然而,DSP在执行算术运算指令时,并不知道当前所处理的数据是整数还是小数,更不能指出小数点的位置在哪里;因此,在编程时必须指定一个数的小数点处于哪一位,这就是定标;通过定标,可以在16位数的不同位置上确定小数点,从而表示出一个范围大小不同且精度也不同的小数;误差问题因为在用定点DSP实现时,所有的数据都是定长的,运算也都是定点运算,因而会产生有限字长效应;所产生的误差主要包括:数模转换引起的量化误差、系数量化引起的误差以及运算过程中的舍入误差;在用定点DSP时,产生误差是不能避免的;循环寻址循环寻址是DSP中经常用到的一种寻址方式;该寻址方法可以对一块特定存储区实现循环的操作;可以把循环寻址理解为实现一个滑动窗,新数据引入后将覆盖老的数据,便得该窗中包含了需处理的最新数据;在数字信号处理中的FIR、卷积等运算中,循环寻址具有极其重要的意义;运算量估计及D SP 芯片的选取;滤波器必须做到实时处理,因此对运算量应该有一个精确的估计,然后选择合适的D SP 处理器;估计运算量时应按最高采样率时计算,主要估算其乘加次数;A/D 及D/A 变换器的选取A/D 及D/A 变换器的选取主要考虑速度和数据宽度;变换器的速度一定要大于所设计滤波器的最高采样速率并要考虑一定的裕量,变换器的数据宽度则根据实际需要的计算精度选择;DDS 芯片的选取DDS 芯片的选择主要考虑频率的调整步长,当可调滤波器的调整步长较大时,可以选择精度稍低的D DS 芯片;软件流程滤波器的软件要实现的功能主要是FIR滤波;工作流程为:根据按键输入的频率,DSP计算出应对AD9850设置的状态字并对AD9850进行设置,AD9850将按设置的频率输出时钟;A/D 转换后的数据进入FIFO中,当到达设置的数据量时将产生中断,DSP将输入 FIFO 中的数据读入DSP并进行FIR运算;运算完成后的数据写入输出FIFO;输出FIFO中的数据将按照与A/D转换同样的速率输出到 D/A 变换器中并产生模拟输出;这样,只要保证FIR运算足够快就可以既不会产生数据溢出,也不会输出数据不足;图4 软件流程图5.结束语由于数字技术的飞速发展,数字滤波理论得到飞速发展,对数字滤波器的设计也提出了更高的要求;现代数字滤波器可以用软件或硬件2 种方式来实现,软件方式实现的优点是可以通过参数的修改进行滤波器性能的仿真和优化;本文运用MATLAB软件,根据设计要求进行了FIR滤波器的仿真;并分析了用DSP实现FIR滤波器的硬件结构和几个关键问题,这些关键问题在实际设计中都有着重要义; 6.参考文献1程佩青.数字信号处理教程M.北京:清华大学出版社,2008,323-369.2万永革.数字信号处理的MATLAB实现M.北京:科学出版社,2007,187-234.3张卫宁.DSP原理及应用教程M.北京:科学出版社,2008,282-296.4张雄伟,邹霞,贾冲.DSP芯片原理与应用M.北京:机械工业出版社,2005,48-76.5罗军辉,罗勇江,白义臣,庞娜.Matlab在数字信号处理中的应用M.北京:机械工业出版社,2005,99-115.6赵顺珍,马英..基于DSP的FIR数字滤波器设计与实现J..微计算机信息,2009 ,25 2:29-31.7张萍.基于MATLAB与DSP的FIR数字滤波器的设计J.中国科技信息,200723:80 – 81.8周辉,董正宏.数字信号处理基础及Matlab实现M.北京:希望电子出版社,2006,116-121.9彭红平,杨福宝.基于Matlab 的FIR 数字滤波器设计J.武汉理工大学学报,2005,105: 275-278.7.个人总结这次课设题目是FIR滤波器的MATLAB设计与实现,通过这次课设使我受益匪浅,首先,我先去图书馆下载各种论文,在网上查找各种资料,但FIR滤波器的知识已经忘得差不多了,一些资料看不懂,把数字信号课件又了一遍,然后是MATLAB编程,以前虽然做实验的时候接触过MATLAB软件,但并不很熟练,这次编程中出现了一些不应该的错误;在这次课设中,需要了解怎么用DSP实现FIR滤波器,由于我们没有学过DSP,所以查了一些资料,但还是觉得很不明白;在写课设报告过程中,越写越觉得自己很无知,平时学习不扎实,对各种知识点没有进行及时积累与总结,导致做课设时临时抱佛脚;以后一定要认真学习,拓展学习知识面,也要加强团队合作与沟通;。

实验四FIR数字滤波器设计与软件实现

实验四FIR数字滤波器设计与软件实现

实验四FIR数字滤波器设计与软件实现
实验目的:
掌握FIR数字滤波器的设计与软件实现方法,了解滤波器的概念与基
本原理。

实验原理:
FIR数字滤波器全称为有限脉冲响应数字滤波器,其特点是具有有限
长度的脉冲响应。

滤波器通过一系列加权系数乘以输入信号的延迟值,并
将这些值相加得到输出信号。

FIR滤波器的频率响应由滤波器系数所决定。

实验步骤:
1.确定所需的滤波器的设计规格,包括截止频率、通带波纹、阻带衰
减等。

2.选择适当的滤波器设计方法,如窗函数、最佳近似法、最小二乘法等。

3.根据所选方法,计算滤波器的系数。

4.在MATLAB环境下,使用滤波器的系数实现滤波器。

5.输入所需滤波的信号,经过滤波器进行滤波处理。

6.分析输出的滤波信号,观察滤波效果是否符合设计要求。

实验要求:
1.完成FIR数字滤波器的设计和软件实现。

2.对比不同设计方法得到的滤波器性能差异。

3.分析滤波结果,判断滤波器是否满足设计要求。

实验器材与软件:
1.个人电脑;
2.MATLAB软件。

实验结果:
根据滤波器设计规格和所选的设计方法,得到一组滤波器系数。

通过
将滤波器系数应用于输入信号,得到输出滤波信号。

根据输出信号的频率
响应、通带波纹、阻带衰减等指标,评估滤波器的性能。

实验注意事项:
1.在选择设计方法时,需要根据滤波器要求和实际情况进行合理选择。

2.在滤波器实现过程中,需要注意滤波器系数的计算和应用。

3.在实验过程中,注意信号的选择和滤波结果的评估方法。

FIR滤波器的MATLAB设计与实现

FIR滤波器的MATLAB设计与实现

FIR滤波器的MATLAB设计与实现FIR滤波器(Finite Impulse Response Filter)是一种数字滤波器,其特点是其响应仅由有限长度的序列决定。

在MATLAB中,我们可以使用信号处理工具箱中的函数来设计和实现FIR滤波器。

首先,需要明确FIR滤波器的设计目标,包括滤波器类型(低通、高通、带通、带阻)、通带和阻带的频率范围、通带和阻带的增益等。

这些目标将决定滤波器的系数及其顺序。

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

该函数的使用方式如下:```matlabh = fir1(N, Wn, type);```其中,`N`是滤波器长度,`Wn`是通带边缘频率(0到0.5之间),`type`是滤波器的类型('low'低通、'high'高通、'bandpass'带通、'stop'带阻)。

该函数会返回一个长度为`N+1`的滤波器系数向量`h`。

例如,如果要设计一个采样频率为10kHz的低通滤波器,通带截止频率为2kHz,阻带频率为3kHz,可以使用以下代码:```matlabfc = 2000; % 通带截止频率h = fir1(50, fc/(fs/2), 'low');```上述代码中,`50`表示滤波器的长度。

注意,滤波器的长度越大,滤波器的频率响应越陡峭,但计算成本也更高。

在设计完成后,可以使用`freqz`函数来分析滤波器的频率响应。

例如,可以绘制滤波器的幅度响应和相位响应曲线:```matlabfreqz(h);```除了使用`fir1`函数外,MATLAB还提供了其他函数来设计FIR滤波器,如`fir2`、`firpm`、`firls`等,具体使用方式可以参考MATLAB的文档。

在实际应用中,我们可以将FIR滤波器应用于音频处理、图像处理、信号降噪等方面。

例如,可以使用FIR滤波器对音频信号进行去噪处理,或者对图像进行锐化处理等。

FIR 数字滤波器设计和实现.

FIR 数字滤波器设计和实现.

2北京邮电大学信息与通信工程学院概述:IIR 和FIR 比较IIR 与FIR 性能比较IIR 数字滤波器:幅频特性较好;但相频特性较差; 有稳定性问题;FIR 数字滤波器:可以严格线性相位,又可任意幅度特性因果稳定系统可用FFT 计算(计算两个有限长序列的线性卷积但阶次比IIR 滤波器要高得多3北京邮电大学信息与通信工程学院概述:IIR 和FIR 比较IIR 与FIR 设计方法比较IIR DF :无限冲激响应,H(Z 是z -1的有理分式,借助于模拟滤波器设计方法,阶数低(同样性能要求。

其优异的幅频特性是以非线性相位为代价的。

缺点:只能设计特定类型的滤波器,不能逼近任意的频响。

FIR DF :有限冲激响应,系统函数H(Z 是z -1的多项式,采用直接逼近要求的频率响应。

设计灵活性强缺点:①设计方法复杂;②延迟大;③阶数高。

(运算量比较大,因而在实现上需要比较多的运算单元和存储单元FIR DF 的技术要求:通带频率ωp ,阻带频率ωs 及最大衰减αp ,最小衰减αs 很重要的一条是保证H(z 具有线性相位。

4北京邮电大学信息与通信工程学院概述:FIR DF 设计方法FIR 数字滤波器设计FIR 滤波器的任务:给定要求的频率特性,按一定的最佳逼近准则,选定h(n 及阶数N 。

三种设计方法:n 窗函数加权法o 频率采样法p FIR DF 的CAD --切比雪夫等波纹逼近法5北京邮电大学信息与通信工程学院概述:FIR DF 零极点FIR 滤波器的I/O 关系:10N r y(nh(rx(n r−==−∑0121(, ,,,...,=−h n n N FIR 滤波器的系统传递函数:1211011N N N rN r h(z h(z .....h(N H(zh(rzz −−−−−=++−==∑⇒在Z 平面上有N-1 个零点;在原点处有一个(N-1阶极点,永远稳定。

FIR 系统定义:一个数字滤波器DF 的输出y(n,如果仅取决于有限个过去的输入和现在的输入x(n, x(n-1,. ......, x(n-N+1,则称之为FIR DF 。

dsp实验报告 fir实验报告

dsp实验报告 fir实验报告

dsp实验报告 fir实验报告DSP实验报告:FIR实验报告引言:数字信号处理(Digital Signal Processing,DSP)是一门研究如何对数字信号进行处理和处理的学科。

其中,滤波器是数字信号处理中最常用的技术之一。

本实验报告旨在介绍FIR(Finite Impulse Response)滤波器的原理、设计和实现过程,并通过实验验证其性能。

一、FIR滤波器的原理FIR滤波器是一种线性时不变系统,其输出信号仅由输入信号的有限个历史样本决定。

其基本原理是将输入信号与滤波器的冲激响应进行卷积运算,以实现对输入信号的滤波处理。

二、FIR滤波器的设计方法1. 理想低通滤波器设计方法理想低通滤波器的频率响应在截止频率之前为1,在截止频率之后为0。

通过对理想低通滤波器的频率响应进行采样和离散化,可以得到FIR滤波器的系数序列。

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

其基本思想是将理想低通滤波器的频率响应与一个窗函数进行乘积,从而得到实际可实现的FIR滤波器的系数序列。

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

三、FIR滤波器的实现FIR滤波器可以通过直接形式和间接形式两种方式实现。

直接形式是按照滤波器的差分方程进行计算,而间接形式则是利用FFT(Fast Fourier Transform)算法将滤波器的系数序列转换为频域进行计算。

四、FIR滤波器的性能评估1. 幅频响应幅频响应是评估FIR滤波器性能的重要指标之一。

通过绘制滤波器的幅频响应曲线,可以直观地观察滤波器在不同频率下的衰减情况。

2. 相频响应相频响应是评估FIR滤波器性能的另一个重要指标。

相频响应描述了滤波器对输入信号的相位延迟情况,对于某些应用场景,相频响应的稳定性和线性性非常重要。

3. 稳态误差稳态误差是指FIR滤波器在达到稳态后输出信号与理想输出信号之间的差异。

通过对滤波器的输入信号进行模拟或实际测试,可以计算出滤波器的稳态误差,并评估其性能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
index=128+j; % y(i)=b0*x_temp(index); %for 循环,按直接法公式计算输出值 for k=1:jieshu %每次都是直接从 x_temp 当前的值开始算, 不再依次对 x_temp 进行移位处理 if(index -k<=0) %发现标称<0 后,需要给调头跑到缓存区的最后。 y(i)=y(i)+b(k)*x_temp(index -k+jieshu); else y(i)=y(i)+b(k)*x_temp(index -k); end end end end end end (2)主函数中,通过 my_filter.m 的调用,实现了按帧(每帧长度 128 点)处理,模拟实 际情况对对信号 x 进行滤波。代码如下: %========================================================= %编写 my_fir_filter.m 文件模拟实际处理过程,按帧对 x 进行低通滤波处理,每帧 128 点 %========================================================= t=(0:length(x)-1)/fs; figure(4); %绘制经 my_filter.m,低通滤波器处理后的信号图像 subplot(2,2,1); plot(t,x); title('原信号'); subplot(2,2,3) plot(t,y_low); xf=fft(x);%FFT 得到的是一个 X(k),k 表示频率,abs(X(k))表示增益 % plot(ab%s(xf));%直接绘制,是一个关于 Fs/2 对称 title('低通滤波信号'); fm=5000*length(xf)/fs;%为了对比度更强 取前 5000 个点 f=(0:fm)*fs/length(xf); subplot(2,2,2); plot(f,abs(xf(1:length(f)))); y_lowf=fft(y_low); title('原信号频谱'); subplot(2,2,4); plot(f,abs(y_lowf(1:length(f)))); title('低通滤波信号频谱');
3
figure(4); %绘制经 my_filter.m,低通滤波器处理后的信号图像 subplot(2,2,1); plot(t,x); title('原信号'); subplot(2,2,3) plot(t,y_low); xf=fft(x);%FFT 得到的是一个 X(k),k 表示频率,abs(X(k))表示增益 % plot(ab%s(xf));%直接绘制,是一个关于 Fs/2 对称 title('低通滤波信号'); fm=5000*length(xf)/fs;%为了对比度更强 取前 5000 个点 f=(0:fm)*fs/length(xf); subplot(2,2,2); plot(f,abs(xf(1:length(f)))); y_lowf=fft(y_low); title('原信号频谱'); subplot(2,2,4); plot(f,abs(y_lowf(1:length(f)))); title('低通滤波信计 FIR 数字滤波器的主要设计方法有窗函数设计法和频率采样设计法, 还可以频率采样法 和窗函数法结合设计。 窗函数法的频率采样法设计过程简单,计算量小,但对滤波特性的控制作用较弱,没有 明确的算法。FIR 的优化设计基于函数逼近理论,通过不同误差准则对滤波特性进行优化。 常用的算法有切比雪夫(等纹波)逼近法和最小二乘滤波算法。 2、FIR 数字滤波器的实现 FIR 滤波器的实现通常由直接型、级联型和频率采样、快速卷积几种实现结构。本实验 使用直接型来实现,具体原理如下: 传递函数 H (z )
br z r
0
N
r
可得直接实现型的差分方程为: y(n )
r 0
br x(n
N
r)
三、实验内容与步骤
1、已知一段 48KHZ 的语音信号(20 秒长左右) ,试用 matlab 设计 256 阶 FIR 滤波器 实现 1KHZ 低通滤波及 5KHZ 高通滤波: 实验要求没有明确给出所需设计低通、 高通滤波器的类型以及具体指标。 下面用 matlab 自带的函数 fir1 来实现 256 阶的波特沃兹滤波器。其中 wn 是截止频率归一化后的值: ********************************************************************** %音频信号文件的读入。存为 x [x,fs,bits]=wavread('10s_.wav'); %'1.wav'为已给的语音信号剪辑 %========================================================= %设计一个 fc=1kHz 的 8 阶模拟、数字低通滤波器 %指标 fs=48000Hz Fp=1000Hz % b=fir1(N,wn) %========================================================= Fp=1000; N=256;
2、用上述滤波器的设计结果,对给定语音信号进行处理【自己编制 my_fir_filter.m 函 数来实现滤波, 用 matlab 自带的 filter 函数来验证结果】 , 模拟实际处理过程, 实现按帧 (每 帧长度 128 点)处理 (1) my_fir_filter.m 模拟了实际处理过程,实现了按帧(每帧 128 点)处理。并且仅仅开 辟了长度为滤波器阶数 256 点的缓存区 x_temp=zeros(1,jieshu)。每次读入新的数据 x(n)时, 即时地根据式子计算 y(n )
0
wn=Fp/(fs/2); % Wn 是一个归一化频率,在滤波器设计中是用 fs/2 进行归一 figure(1) b_low=fir1(N,wn); [h,w]=freqz(b_low,1,512); f=w*fs/(2*pi); plot(f,abs(h),'--r') xlabel('频率'); ylabel('幅度'); title('Butterwoth 低通滤波器'); hold on %========================================================= %设计一个 fc=5kHz 的 8 阶模拟、数字高通滤波器 %指标 fs=48000Hz Fp=5000Hz % b=fir1(N,wn ,'high') %========================================================= Fp=5000; N=256; wn=Fp/(fs/2); % Wn 是一个归一化频率,在滤波器设计中是用 fs/2 进行归一 b_high=fir1(N,wn,'high'); [h,w]=freqz(b_high,1,512); f=w*fs/(2*pi); plot(f,abs(h)) set(gca,'ylim',[0 1.1]); %最大频率为 Fs legend('低通 Filter','高通 Filter');%图标 hold off
FIR 滤波器的设计与实现
一、实验目的和要求
1、了解 FIR(finite impulse response)滤波器的种类、基本结构、设计过程; 2、学会用窗函数法、频率采样设计法来设计 FIR 数字滤波器; 3、学会调用 MATLAB 信号处理工具箱中滤波器设计函数 4、自己编程实现 FIR 的直接实现法;并考虑实际工程中的处理效率。 5、学会使用 cooledit 软件来对音频信号做简单的处理。
%========================================================= %编写 my_filter.m 文件模拟实际处理过程,按帧对 x 进行高通滤波处理,每帧 128 点 %========================================================= figure(5); %绘制经 my_filter.m,高通滤波器处理后的信号图像 subplot(2,2,1); plot(t,x); title('原信号'); subplot(2,2,3); plot(t,y_high); title('高通滤波信号'); xf=fft(x); fm=5000*length(xf)/fs; f=(0:fm)*fs/length(xf); subplot(2,2,2); plot(f,abs(xf(1:length(f)))); title('原信号频谱');
br x _ temp(index r
0
N
r)。一旦发现
index-r<=0, 就给 index+256。具体实现过程见核心代码: **********************************************************************
1
%编写 my_fir_filter.m 文件模拟实际处理过程,按帧对 x 进行滤波处理,每帧 128 点 function y=my_fir_filter(num,x) jieshu=length(num)-1; b0=num(1); b=num(2:jieshu+1); SIZE=size(x); Count=SIZE(1); %模拟实际应用中按数据帧进行处理,x 信号中,总共有 zhen_count_max*128 帧数据 zhen_count_max=(Count-mod(Count,128))/128+1; x_temp=zeros(1,jieshu);%开辟缓存区 i=0; y=zeros(1,Count); zhen_in=zeros(128,zhen_count_max); index=0; %模拟实际,将 x 信号按帧分组,并存储于 zhen_in 数据结构中。 for zhen_count=1:zhen_count_max %按帧处理,每帧有 128 个数据点 zhen_count; for j=1:128 i=(zhen_count-1)*128+j; if(i>Count) break %数据点处理完毕,跳出循环 end if(mod(zhen_count,2)==1) %奇数帧 x_temp(j)=x(i); %依次将这一帧的 128 个数据存入缓存区的前 128 个位置 index=j; %建立索引,每次都是直接从 x_temp[index]当前的值开始算 y(i)=b0* x_temp(index); for k=1:jieshu if(index-k<=0) %发现标称<0 后,需要给调头跑到缓存区的最后。 y(i)=y(i)+b(k)*x_temp(index-k +jieshu); else y(i)=y(i)+b(k)*x_temp(index-k); end end else %偶数帧 x_temp(128+j)=x(i); %依次将这一帧的 128 个数据存入缓存区的后 128 个位置
相关文档
最新文档