FIR滤波器以及窗口设计
- 格式:ppt
- 大小:4.40 MB
- 文档页数:64
IIR和FIR数字滤波器的设计⽅法及其窗函数设计法第六章IIR数字滤波器的设计⽅法6.1 数字滤波器的基本概念数字滤波器:是指输⼊输出均为数字信号,通过⼀定运算关系改变输⼊信号所含频率成分的相对⽐例或者滤除某些频率成分的器件。
优点:⾼精度、稳定、体积⼩、重量轻、灵活,不要求阻抗匹配,可实现特殊滤波功能⼀、数字滤波器的分类1. 按功能分:低通、⾼通、带通、带阻、全通滤波器⼀、数字滤波器的分类2.按实现的⽹络结构或单位抽样响应分:⼆、数字滤波器的设计过程⽤⼀个因果稳定的离散LSI 系统的系统函数H (z )逼近此性能指标按设计任务,确定滤波器性能要求,制定技术指标利⽤有限精度算法实现此系统函数:如运算结构、字长的选择等实际技术实现:软件法、硬件法或DSP 芯⽚法三、数字滤波器的性能要求选频滤波器的频率响应:三、数字滤波器的性能要求实际低通滤波器理想低通滤波器三、数字滤波器的性能要求实际低通滤波器理想低通滤波器三、数字滤波器的性能要求实际低通滤波器理想低通滤波器7.3 窗函数设计法(以低通数字滤波器为例)⼀、设计步骤1.确定滤波器的频率响应H d(e jw)]的表达式⼀、设计步骤2.求出此理想滤波器对应的单位抽样响应序列h d(n)所得到的h d(n)是⼀个⽆限长序列。
⼀、设计步骤3.将⽆限长h d(n)截取为长度为N的有限长h(n)⼀、设计步骤4.选取窗函数w(n)及确定长度N矩形窗三⾓形窗汉宁窗4.选取窗函数w(n)及确定长度N1.根据阻带最⼩衰减选择w(n)2.根据过渡带宽及w(n)确定N所得到的h(n)的频谱与h d(n)的频谱会不会⼀样?⼀、设计步骤5.求H(e jw)=DTFT[h(n)],检验是否满⾜设计要求,如不满⾜,改变w(n)和N,重新设计。
⼆、设计举例。
FIR 数字滤波器的设计方法IIR 数字滤波器最大缺点:不易做成线性相位,而现代图像、语声、数据通信对线性相位的要求是普遍的。
正是此原因,使得具有线性相位的FIR 数字滤波器得到大力发展和广泛应用。
1. 线性相位FIR 数字滤波器的特点FIR DF 的系统函数无分母,为∑∑-=--=-==11)()(N n n N i ii z n h zb z H ,系统频率响应可写成:∑-=-=10)()(N n jwn jwe n h e H ,令)(jw e H =)()(w j e w H Φ,H(w)称为幅度函数,)(w Φ称为相位函数。
这与模和幅角的表示法有所不同,H(w)为可正可负的实数,这是为了表达上的方便。
如某系统频率响应)(jw e H =wj we34sin -,如果采用模和幅角的表示法,w 4sin 的变号相当于在相位上加上)1(ππj e =-因,从而造成相位曲线的不连贯和表达不方便,而用)()(w j e w H Φ这种方式则连贯而方便。
线性相位的FIR 滤波器是指其相位函数)(w Φ满足线性方程:)(w Φ=βα+-w (βα,是常数)根据群时延的定义,式中α表示系统群时延,β表示附加相移。
线性相位的FIR 系统都具有恒群时延特性,因为α为常数,但只有β=0的FIR 系统采具有恒相时延特性。
问题:并非所有的FIR 系统都是线性相位的,只有当它满足一定条件时才具有线性相位。
那么应满足什么样的条件?从例题入手。
例题:令h(n)为FIR 数字滤波器的单位抽样相应。
N n n ≥<或0时h(n)=0,并假设h(n)为实数。
(a ) 这个滤波器的频率响应可表示为)()()(w j jwew H e H Φ=(这是按幅度函数和相位函数来表示的,不是用模和相角的形式),)(w H 为实数。
(N 要分奇偶来讨论) (1) 当h(n)满足条件)1()(n N h n h --=时,求)(w H 和)(w Φ(π≤≤w 0) (2) 当h(n)满足条件)1()(n N h n h ---=时,求)(w H 和)(w Φ(π≤≤w 0)(b ) 用)(k H 表示h(n)的N 点DFT(1) 若h(n)满足)1()(n N h n h ---=,证明H(0)=0; (2) 若N 为偶数,证明当)1()(n N h n h --=时,H(N/2)=0。
FIR数字滤波器的(海明)窗函数法设计1.课程设计目的(1)熟悉并掌握MATLAB中有关声音(wave)录制、播放、存储和读取的函数。
(2)加深对FIR数字滤波器设计的理解,并用窗函数法进行FIR数字滤波器的设计。
(3)将设计出来的FIR数字滤波器利用MATLAB进行仿真。
(4)对一段音频文件进行加入噪声处理,对带有噪声的文件进行滤波处理。
2.设计方案论证2.1 Matlab语言概述MATLAB是一种以矩阵运算为基础的交互式程序语言,专门针对科学、工程计算及绘图的需求。
随着版本的不断升级,内容不断扩充,功能更加强大,从而被广泛应用于仿真技术、自动控制和数字信号处理领域。
此高级语言可用于技术计算此开发环境可对代码、文件和数据进行管理交互式工具可以按迭代的方式探查、设计及求解问题数学函数可用于线性代数、统计、傅立叶分析、筛选、优化以及数积分等二维和三维图形函数可用于可视化数据各种工具可用于构建自定义的图形用户界面各种函数可将基于MATLAB的算法与外部应用程序和语言(如C、C++、Fortran、Java、COM 以及Microsoft Excel)集成不支持大写输入,内核仅仅支持小写2.2声音处理语音是人类获取信息的重要来源和利用信息的重要手段。
语音信号处理是一门发展十分迅速,应用非常广泛的前沿交叉学科,同时又是一门跨学科的综合性应用研究领域和新兴技术。
声音是一种模拟信号,而计算机只能处理数字信息0和1。
因此,首先要把模拟的声音信号变成计算机能够识别和处理的数字信号,这个过程称为数字化,也叫“模数转换”。
在计算机对数字化后的声音信号处理完后,得到的依然是数字信号。
必须把数字声音信号转变成模拟声音信号,然后再图1 选择windows下的录音机”或是点击快捷按钮图5 加噪后语音信号和频谱图7 滤波器幅频特性与相频特性设计的滤波器是用单位采样响应h(n)表示的,可以利用带噪声语音图8滤波器系统函数。
FIR滤波器的设计及特点FIR滤波器(Finite Impulse Response Filter)是一种数字滤波器,它的特点是其冲激响应是有限长度的。
FIR滤波器通过对输入序列做线性加权的运算来实现滤波的效果。
FIR滤波器的设计需要确定滤波器的系数以及长度,其设计方法有很多种,其中比较常用的有窗函数法、频率采样法以及最小二乘法。
FIR滤波器的设计方法之一是窗函数法,它是根据所设定的频率响应曲线来进行设计的。
具体的步骤是:首先,在频率域上设定所需的频率响应曲线;然后,将该曲线转换到时域上,得到滤波器的单位冲激响应;最后,对单位冲激响应进行加窗处理,得到最终的滤波器系数。
在窗函数法中,常用的窗函数有矩形窗、汉宁窗、哈宁窗等,不同的窗函数会导致滤波器具有不同的性能,如频域主瓣宽度、滤波器的过渡带宽度等。
另一种常用的FIR滤波器设计方法是频率采样法,它是通过在频率域上进行采样来确定滤波器的系数。
在频域上,滤波器的频率响应可以表示为幅度特性和相位特性。
通过选取一组频率,在这些频率上等幅响应,并且在其余的频率上衰减至零,然后对这些采样点进行IFFT运算,即可得到滤波器的系数。
频率采样法的特点是可以直观地设计滤波器,但是在采样点之间的频率响应无法得到保证,会产生幅度插值误差。
最小二乘法是一种通过最小二乘准则来设计滤波器的方法。
它在时域上通过对输入序列和输出序列之间的误差进行最小化,得到最优的滤波器系数。
最小二乘法可以看作是一种优化问题的求解方法,需要解决一个线性规划问题,因此需要求解线性方程组来确定滤波器的系数。
1.稳定性:FIR滤波器是一种无反馈结构的滤波器,其零点可以完全控制在单位圆内,因此具有稳定性保证。
2.线性相位特性:FIR滤波器的冲激响应通常是对称的,因此它不会引入相位失真,可以保持输入信号的相位。
3.精确控制频率响应:FIR滤波器的频率响应可以通过设计滤波器系数来精确控制,具有很高的灵活性。
4.零相移滤波:由于线性相位特性,FIR滤波器可以实现零相移的滤波效果,适用于对输入信号相位要求较高的应用。
FIR滤波器设计要点FIR (Finite Impulse Response) 滤波器是一种数字滤波器,其设计要点包括滤波器类型选择、滤波器系数设计、频率响应规格、窗函数和滤波器长度选择等。
以下是对这些要点的详细介绍。
1.滤波器类型选择:在设计FIR滤波器之前,需要确定滤波器的类型。
常见的FIR滤波器类型包括低通滤波器、高通滤波器、带通滤波器和带阻滤波器。
不同类型的滤波器适用于不同的应用场景,因此在选择滤波器类型时需要考虑系统的需求。
2.滤波器系数设计:FIR滤波器的核心是滤波器系数。
滤波器系数决定了滤波器的频率响应和滤波特性。
常用的设计方法包括窗函数法、最小均方误差法和频率抽样法等。
窗函数法是最常用的设计方法,其基本思想是通过选择合适的窗函数来得到滤波器系数。
3.频率响应规格:在设计FIR滤波器时,需要明确所需的频率响应规格,包括通带增益、阻带衰减、过渡带宽等。
这些规格直接影响了滤波器的性能,因此需要根据具体应用场景来确定。
4.窗函数选择:窗函数在FIR滤波器设计中起到了重要的作用。
常用的窗函数包括矩形窗、汉宁窗、汉明窗、布莱克曼窗等。
不同的窗函数具有不同的特性,选择合适的窗函数可以得到优良的滤波器性能。
5.滤波器长度选择:滤波器长度决定了滤波器的频率分辨率和时间分辨率。
滤波器长度越长,频率响应越尖锐,但计算复杂度也越高。
因此,在设计FIR滤波器时需要权衡计算复杂度和性能要求,选择合适的滤波器长度。
6.优化设计:7.实现方式:总之,设计FIR滤波器要点包括滤波器类型选择、滤波器系数设计、频率响应规格、窗函数和滤波器长度选择等。
设计者需要根据具体的应用场景和性能要求来进行合理的设计和优化,以满足系统的需求。
语音信号的数字滤波——FIR数字滤波器的(汉宁)窗函数法设计设计题目:语音信号的数字滤波——FIR数字滤波器的(汉宁)窗函数法设计一、课程设计的目的通过对常用数字滤波器的设计和实现,掌握数字信号处理的工作原理及设计方法;掌握利用数字滤波器对信号进行滤波的方法。
并能够对设计结果加以分析。
二、设计步骤2.1窗函数设计法的原理窗函数的基本思想:先选取一个理想滤波器(它的单位抽样响应是非因果、无限长的),再截取(或加窗)它的单位抽样响应得到线性相位因果FIR滤波器。
这种方法的重点是选择一个合适的窗函数和理想滤波器。
设x(n)是一个长序列,是长度为N的窗函数,用截断,得到N点序列,即在频域上则有由此可见,窗函数不仅仅会影响原信号在时域上的波形,而且也会影响到频域内的形状。
2.2汉宁窗函数简介汉宁窗、海明窗和布莱克曼窗,都可以用一种通用的形式表示,这就是广义余弦窗。
这些窗都是广义余弦窗的特例,汉宁(Hanning)窗又称升余弦窗,汉宁窗可以看作是3个矩形时间窗的频谱之和,或者说是 3个 sinc(t)型函数之和,而括号中的两项相对于第一个谱窗向左、右各移动了π/T,从而使旁瓣互相抵消,消去高频干扰和漏能。
适用于非周期性的连续信号。
公式如下:2.3进行语音信号的采集(1)按“开始”-“程序”-“附件”-“娱乐”-“录音机”的顺序操作打开Windows系统中的录音机软件。
如图1所示。
图1 windows录音机(2)用麦克风录入自己的声音信号并保存成wav文件。
如图2所示。
图2 保存文件保存的文件按照要求如下:1 音信号文件保存的文件名为“yuxuejiao.wav”。
②语音信号的属性为“8.000KHz,8位,单声道 7KB/秒” ,其它选项为默认。
plot(k(1:20000)*1,abs(S1(1:20000)));title('预处理语音信号单边带频谱')在m文件编辑器中输入相应的指令将自己的语音信号导入Matlab工作台,点击“run”或者“F5”运行文件。
实验8用窗口法设计FIR 数字滤波器8.1实验目的了解一个实际滤波器设计过程,加深掌握用窗口法设计FIR 数字滤波器的原理和窗函数对数字滤波器性能的影响。
8.2基本原理设所希望得到的滤波器的理想频率响应为H d (e jw )。
那FI 滤波器的设计就在于寻找一个频率响应为()()∑=--=N n jwn jwH 0e n h e 去逼近H d (e jw )。
在这种逼近中最直接的一种方法是从单位冲激响应序列h(n)着手,使h(n)逼近理想的单位冲激响应h d (n)。
我们知道h d (n)可以从理想频率响应H d (e jw )通过傅里叶反变换得到,即: ()()∑∞∞=-=n jwn jwH e n h e dd ()⎰-=ππωπd H jwn jw de )(e 21n h d但是一般来说,这样得到的单位冲激响应h d (n)往往都是无限长序列,而且是非因果的。
我们以一个截止频率为ωC 的线性相位理想低通滤波器为例来说明。
设低边滤波器的时延为ɑ,即()πωωωωα≤≤≤⎩⎨⎧-cc jw jw H 0e ed (8-2) 则 ()()[]()απαωωπωωα--==⎰--n n d c jwn jw sin e e 21n h c c d 这是一个以ɑ为中心的偶对称的无限长非因果序列。
这样一个无限长的序列怎样用一个有限长主序列去近似呢?最简单的办法就是直接截取它的一段来代替它。
例如n=0到n=N —1的一段截取来作为h(n),但是为了保证所得到的是线性相位滤波器,必须满足h(n)的对称性,所以时延ɑ应该取h(n)长度的一半,即ɑ=(N —1)/2。
()()n100h n h d 其他-≤≤⎩⎨⎧N n n (8-3) 这种直接截取的办法可以形象地想象为,h(n)好比是通过一个窗口所看到的一段h d (n)。
h(n)为h d (n)和一个"窗口函数"的乘积。
在这里,窗口函数就是矩形序列R N (n),即h(n)=h d (n)·R N (n) (8-4)但是一般来说,窗口函数并不一定是矩形序列,可以在矩形以内对h d (n)作一定的加权处理,因此,一般可以表示为h(n)=h d (n)·ω(n) (8-5)这里ω(n)就是窗口函数。
6.2 FIR滤波器的窗口设计法FIR滤波器与IIR滤波器特点不同,设计方法也就不同。
由于FIR系统的冲激响应就是其系统函数各次项的系数,所以设计FIR滤波器的方法之一可以从时域出发,截取有限长的一段冲激响应作为H(z)的系数,冲激响应长度N就是系统函数H(z)的阶数。
只要N足够长,截取的方法合理,总能满足频域的要求。
这种时域设计、频域检验的方法一般要反复几个回合,不像IIR DF设计靠解析公式一次计算成功。
6.2.1 设计原理我们的目标是设计一个线性相位的FIR DF,要求的理想频响是H d(e jω),它是w的周期函数,周期2π,因此可以展开成傅氏级数(6.16)式中h d(n)是傅里叶系数,也正是与理想频响对应的理想单位抽样响应序列,但是我们不能以h d(n)作为设计FIR DF用的h(n),因为h d(n)一般是非因果的,且无限长,物理上无法实现。
为了解决这个问题,我们可先把无限长的h d(n)截短为有限长序列,然后把有限长序列右移使之成为因果序列h(n)。
用h(n)近似h d(n)设计出来的FIR滤波器,其频响H(e jω)一定也是理想频响H d(e jω)的近似。
以上方法中的截短就是加窗,所以叫窗口法设计。
h(n)来自式(6.16)傅里叶级数展开,所以又叫傅里叶级数法。
窗口法的设计流程是:流程中最关键的一步是加窗。
6.2.2 窗函数的选择在自变量定义域上截取其中一段的过程叫“家窗”,自变量为t时叫加“时域窗”,自变量为ω时叫加“频域窗”。
截取段的大小就是窗的大小,截取段在原定义域上的位置就是窗的位置。
如果截取过程中不对函数值做任何改动(或理解为全部乘1),叫加“矩形窗”;如果在截取段不同位置上按一定规律对函数值加权(乘以不同的数),则权值间的关系叫窗的形状。
选择窗函数,就是确定窗口大小、位置和形状。
我们举一个实际例子来说明问题。
设截至频率为ωc的理想FIR低通滤波器,其理想频响是求序列傅氏变换h d (n )是以n =0为中心偶对称、n 取值由-∞到∞的无限长非因果序列。
)(9cos 15.0)(12cos 15.0)(1919n R n n R N n n w ⎥⎦⎤⎢⎣⎡⎪⎭⎫ ⎝⎛-=⎥⎦⎤⎢⎣⎡⎪⎭⎫ ⎝⎛--=ππ2.3进行语音信号的采集(1)按“开始”-“程序”-“附件”-“娱乐”-“录音机”的顺序操作打开Window s系统中的录音机软件。
如图1所示。
图1 wi ndows 录音机(2)用麦克风录入自己的声音信号并保存成wav 文件。
如图2所示。
图2 保存文件保存的文件按照要求如下:① 音信号文件保存的文件名为“y uxueji ao.wav ”。
②语音信号的属性为“8.000KH z,8位,单声道 7KB /秒” ,其它选项为默认。
2.4语音信号的分析将“yu xuejiao .wav ”语音文件复制到计算机装有Ma tlab 软件的磁盘中相应Mat lab目录中的“work ”文件夹中。
打开Matlab 软件,在菜单栏中选择“File ”-图3语音信号的截取处理图在图3中,其中第一个图为原始语音信号;第二个图是截短后的信号图。
图4频谱分析图其中第二个图是信号的FFT 结果,其横坐标的具体值是X (k)中的序号k;第三个图是确定滤波频率范围的参考图,其横坐标的具体值应当是遵循DFT 定义式和频率分辨率求得的:∑-===10)()]([)(N n k N W n x n x DFT k X π当k等于0时, 020j kn Njk knNe eW ==⋅-=π,从数字角频率上看,对应的正好是0=ω即直流的位置,也就是说,在取滤波频段时,当将主要能量(即红色框的部分)保留,其余频段部分的信号滤除。
)]([)(n x DFT k X =相当于是信号)(n x 的实际频谱)]([)(n x DFT ej X w =采样,而)(n x 又是连续时间语音信号)(t x 的采样。
)(k X 的每两个相邻取值之间的频率间隔大小对应到语音信号)(n x 的频谱中去,其频率间隔大小正好是采样结果的长度采样速率===∆L f f f s det f ∆称频率分辨率,其中Hz f s 8000=,10000=L ,p2=sum(s2.^2)-sum(s1.^2);SNR1=10*log10(p1/p2);p3=sum(s4.^2)/8000;p4=sum(s3.^2)/8000-sum(s4.^2)/8000;SNR2=10*log10(p3/p4);2.6 噪声叠加图5 语音信号与加噪声后语音信号对比图五为语音信号与加噪声后语音信号对。
河北科技大学课程设计报告学生姓名: 学号:专业班级:课程名称:学年学期指导教师:20年月课程设计成绩评定表目录1. 窗函数设计低通滤波器1.1设计目的 (1)1.2设计原理推导与计算 (1)1.3设计内容与要求 (2)1.4设计源程序与运行结果 (3)1.5思考题……………………………………………………………………101.6心得体会 (14)参考文献……………………………………………………………………… 151.窗函数设计低通滤波器1.1设计目的1. 熟悉设计线性相位数字滤波器的一般步骤。
2. 掌握用窗函数法设计FIR 数字滤波器的原理和方法。
3. 熟悉各种窗函数的作用以及各种窗函数对滤波器特性的影响。
4. 学会根据指标要求选择合适的窗函数。
1.2设计原理推导与计算如果所希望的滤波器的理想的频率响应函数为()ωj d e H ,则其对应的单位脉冲响应为()()ωπωωππd e e H n h j j d d ⎰-=21 (4.1)窗函数设计法的基本原理是设计设计低通FIR 数字滤波器时,一般以理想低通滤波特性为逼近函数()ωj e H ,即()⎪⎩⎪⎨⎧≤<≤=-πωωωωωαωc c j jd ,,e e H 0,其中21-=N α()()()[]()a n a n d e e d e eH n h c j j j j d d cc--===⎰⎰---πωωπωπωαωωωαωππωsin 2121用有限长单位脉冲响应序列()n h 逼近()n h d 。
由于()n h d 往往是无限长序列,而且是非因果的,所以用窗函数()n ω将()n h d 截断,并进行加权处理,得到:()()()n n h n h d ω=(4.2)()n h 就作为实际设计的FI R数字滤波器的单位脉冲响应序列,其频率响应函数()ωj e H 为()()nj N n j en h eH ωω∑-==1ﻩ ﻩ(4.3)式中,N 为所选窗函数()n ω的长度。
实验四FIR数字滤波器的设计
FIR数字滤波器也称作有限脉冲响应数字滤波器,是一种常见的数字滤波器设计方法。
在设计FIR数字滤波器时,需要确定滤波器的阶数、滤波器的类型(低通、高通、带通、带阻)以及滤波器的参数(截止频率、通带波纹、阻带衰减、过渡带宽等)。
下面是FIR数字滤波器的设计步骤:
1.确定滤波器的阶数。
阶数决定了滤波器的复杂度,一般情况下,阶数越高,滤波器的性能越好,但计算量也越大。
阶数的选择需要根据实际应用来进行权衡。
2.确定滤波器的类型。
根据实际需求,选择低通、高通、带通或带阻滤波器。
低通滤波器用于去除高频噪声,高通滤波器用于去除低频噪声,带通滤波器用于保留一定范围内的频率信号,带阻滤波器用于去除一定范围内的频率信号。
3.确定滤波器的参数。
根据实际需求,确定滤波器的截止频率、通带波纹、阻带衰减和过渡带宽等参数。
这些参数决定了滤波器的性能。
4.设计滤波器的频率响应。
使用窗函数、最小二乘法等方法,根据滤波器的参数来设计滤波器的频率响应。
5.将频率响应转换为滤波器的系数。
根据设计的频率响应,使用逆快速傅里叶变换(IFFT)等方法将频率响应转换为滤波器的系数。
6.实现滤波器。
将滤波器的系数应用到数字信号中,实现滤波操作。
7.优化滤波器性能。
根据需要,可以对滤波器进行进一步优化,如调整滤波器的阶数、参数等,以达到较好的滤波效果。
以上是FIR数字滤波器的设计步骤,根据实际需求进行相应的调整,可以得到理想的滤波器。
FIR数字滤波器设计(窗函数法)C语⾔实现背景介绍:理想滤波器在物理上是不可实现的,其单位脉冲响应是⽆限长、⾮因果的。
窗函数法,就是从时域出发,⽤有限长、因果的单位脉冲响应h(n)去逼近理想滤波器的⽆限长、⾮因果的单位脉冲响应的⽅法。
窗函数法⼜叫傅⾥叶级数法。
更多背景资料,请看数字信号处理(李永全),P175。
⽅法简介:设N-1阶FIR数字滤波器的单位冲击响应为h(n),则传递函数H(z)为:窗函数法的设计步骤如下:1.根据给定的理想频率响应Hd(e^jw),利⽤傅⾥叶反变换,求出单位冲击响应hd(n):2.将hd(n)乘以窗函数w(n),得到所要求的FIR滤波器系数h(n):3.求卷积:使⽤说明⼦函数语句:void firwin(int n, int band, int wn, int fs, double h[], double kaiser=0.0, double fln=0.0, double fhn=0.0);形参说明n:滤波器的阶数band:滤波器的类型,取值1-4,分别为低通、带通、带阻、⾼通滤波器wn:窗函数的类型,取值1-7,分别对应矩形窗、图基窗、三⾓窗、汉宁窗、海明窗、布拉克曼窗和凯塞窗fs:采样频率h:存放滤波器的系数kaiser:beta值fln:带通下边界频率fhn:带通上边界频率源代码void firwin(int n, int band, int wn, int fs, double h[], double kaiser, double fln, double fhn){int i;int n2;int mid;double s;double pi;double wc1;double wc2;double beta;double delay;beta = kaiser;pi = 4.0 * atan(1.0); //pi=PI;if ((n % 2) == 0)/*如果阶数n是偶数*/{n2 = (n / 2) - 1;/**/mid = 1;//}else{n2 = n / 2;//n是奇数,则窗⼝长度为偶数mid = 0;}delay = n / 2.0;wc1 = 2 * pi * fln;wc2 = 2 * pi * fhn;switch (band){case 1:{for (i=0; i<=n2; ++i){s = i - delay;h[i] = (sin(wc1 * s / fs) / (pi * s)) * window(wn, n+1, i, beta);//低通,窗⼝长度=阶数+1,故为n+1h[n - i] = h[i];}if (mid == 1){h[n / 2] = wc1 / pi;//n为偶数时,修正中间值系数}break;}case 2:{for (i=0; i<=n2; i++){s = i - delay;h[i] = (sin(wc2 * s / fs) - sin(wc1 * s / fs)) / (pi * s);//带通h[i] = h[i] * window(wn, n+1, i, beta);h[n-i] = h[i];}if (mid == 1){h[n / 2] = (wc2 - wc1) / pi;}break;}case 3:{for (i=0; i<=n2; ++i){s = i - delay;h[i] = (sin(wc1 * s / fs) + sin(pi * s) - sin(wc2 * s / fs)) / (pi * s);//带阻 h[i] = h[i] * window(wn, n+1, i, beta);h[n - i] = h[i];}if (mid == 1){h[n / 2] = (wc1 + pi - wc2) / pi;}break;}case 4:{for (i=0; i<=n2; i++){s = i - delay;h[i] = (sin(pi * s) - sin(wc1 * s / fs)) / (pi * s);//⾼通h[i] = h[i] * window(wn, n+1, i, beta);h[n-i] = h[i];}if (mid == 1){h[n / 2] = 1.0 - wc1 / pi;}break;}}}//n:窗⼝长度 type:选择窗函数的类型 beta:⽣成凯塞窗的系数static double window(int type, int n, int i, double beta){int k;double pi;double w;pi = 4.0 * atan(1.0); //pi=PI;w = 1.0;switch (type){case 1:{w = 1.0; //矩形窗break;}case 2:{k = (n - 2) / 10;if (i <= k){w = 0.5 * (1.0 - cos(i * pi / (k + 1))); //图基窗}if (i > n-k-2){w = 0.5 * (1.0 - cos((n - i - 1) * pi / (k + 1)));}break;}case 3:{w = 1.0 - fabs(1.0 - 2 * i / (n - 1.0));//三⾓窗break;}case 4:{w = 0.5 * (1.0 - cos( 2 * i * pi / (n - 1)));//汉宁窗break;}case 5:{w = 0.54 - 0.46 * cos(2 * i * pi / (n - 1));//海明窗break;}case 6:{w = 0.42 - 0.5 * cos(2 * i * pi / (n - 1)) + 0.08 * cos(4 * i * pi / (n - 1));//布莱克曼窗 break;}case 7:{w = kaiser(i, n, beta);//凯塞窗break;}}return(w);}static double kaiser(int i, int n, double beta){double a;double w;double a2;double b1;double b2;double beta1;b1 = bessel0(beta);a = 2.0 * i / (double)(n - 1) - 1.0;a2 = a * a;beta1 = beta * sqrt(1.0 - a2);b2 = bessel0(beta1);w = b2 / b1;return(w);}static double bessel0(double x){int i;double d;double y;double d2;double sum;y = x / 2.0;d = 1.0;sum = 1.0;for (i=1; i<=25; i++){d = d * y / i;d2 = d * d;sum = sum + d2;if (d2 < sum*(1.0e-8)){break;}}return(sum);}得到系数之后,与输⼊信号求卷积即可!。
实验二FIR滤波器设计与实现FIR(Finite Impulse Response)滤波器是一种数字滤波器,由有限长的冲激响应组成。
与IIR(Infinite Impulse Response)滤波器相比,FIR滤波器具有线性相位、稳定性和易于设计等优点。
本实验旨在设计和实现一个FIR滤波器。
首先,我们需要确定滤波器的规格和要求。
在本实验中,我们将设计一个低通FIR滤波器,将高频信号滤除,只保留低频信号。
滤波器的截止频率为fc,滤波器的阶数为N,采样频率为fs。
接下来,我们需要确定滤波器的频率响应特性。
常用的设计方法有窗函数法、最小最大规范法等。
本实验采用窗函数法进行滤波器设计。
窗函数法的基本思想是利用窗函数来加权冲激响应的幅度,以达到要求的频响特性。
常用的窗函数有矩形窗、汉宁窗、汉明窗等。
在本实验中,我们选择汉宁窗作为窗函数。
首先,我们需要计算出滤波器的理想频率响应。
在低通滤波器中,理想频率响应为0频率处幅度为1,截止频率处幅度为0。
然后,我们需要确定窗函数的长度L。
一般来说,窗函数的长度L要大于滤波器的阶数N。
在本实验中,我们选择L=N+1接下来,我们利用窗函数对理想频率响应进行加权处理,得到加权后的冲激响应。
最后,我们对加权后的冲激响应进行归一化处理,使滤波器的频率响应范围在0到1之间。
在设计完成后,我们需要将滤波器实现在实验平台上。
在本实验中,我们使用MATLAB软件进行滤波器实现。
首先,我们需要生成一个输入信号作为滤波器的输入。
可以选择一个随机的信号作为输入,或者选择一个特定的信号进行测试。
然后,我们将输入信号输入到滤波器中,得到滤波器的输出信号。
最后,我们将滤波器的输入信号和输出信号进行时域和频域的分析,以评估滤波器的滤波效果。
在实验的最后,我们可以尝试不同的滤波器设计参数,如截止频率、窗函数的选择等,以观察滤波器设计参数对滤波器性能的影响。
综上所述,本实验是关于FIR滤波器设计与实现的实验。
FIR低通滤波器设计一、FIR低通滤波器的设计原理FIR低通滤波器是通过截断滤波器的频率响应来实现的。
设计过程中,需要确定滤波器的截止频率和滤波器的阶数。
阶数越高,滤波器的性能越好,但需要更多的计算资源。
截止频率决定了滤波器的带宽,对应于滤波器的3dB截止频率。
低通滤波器将高频部分去除,只保留低频部分。
二、FIR低通滤波器的设计步骤1.确定滤波器的阶数N:根据滤波器的性能要求,确定阶数N,一般通过试验和优化得到。
2.确定滤波器的截止频率:根据所需的频率特性,确定滤波器的截止频率,可以根据设计要求选择合适的截止频率。
3. 建立理想的频率响应:根据滤波器的类型和截止频率,建立理想的频率响应,例如矩形窗、Hamming窗等。
4.通过傅里叶反变换得到滤波器的冲激响应:将建立的理想频率响应进行傅里叶反变换,得到滤波器的冲激响应。
5.通过采样和量化得到滤波器的离散系数:根据采样频率和滤波器的冲激响应,得到滤波器的离散系数。
6.实现滤波器:利用离散系数和输入信号进行卷积运算,得到滤波器的输出信号。
三、常用的FIR低通滤波器设计方法1.矩形窗设计法:矩形窗设计法是一种简单的设计方法,通过选择合适的滤波器阶数和截止频率,利用离散傅里叶变换求解滤波器的系数。
矩形窗设计法的优点是简单易用,但是频率响应的副瓣比较高。
2. Hamming窗设计法:Hamming窗设计法是一种常用的设计方法,通过选择合适的滤波器阶数和截止频率,利用离散傅里叶变换求解滤波器的系数。
Hamming窗设计法可以减小副瓣,同时保持主瓣较窄。
3. Parks-McClellan算法:Parks-McClellan算法是一种常用的优化设计方法,通过最小化滤波器的最大截止误差来得到滤波器的系数。
Parks-McClellan算法可以得到相对较好的频率响应,但是计算量较大。
四、总结FIR低通滤波器设计是数字信号处理中的关键任务之一、设计滤波器的阶数和截止频率是设计的关键步骤,采用不同的设计方法可以得到不同的滤波器性能。
实验四 用窗函数设计FIR 滤波器一、 实验目的1、熟悉FIR 滤波器设计的基本方法。
2、掌握用窗函数设计FIR 数字滤波器的原理及方法,熟悉相应的计算机高级语言编程。
3、熟悉线性相位FIR 滤波器的幅频特性和相位特性。
4、了解各种不同窗函数对滤波器性能的响应。
二、 实验原理和方法窗函数法设计的任务在于寻找一个可实现有限长单位脉冲响应的传递函数H(e jw )=∑-=10N n h(n)e -jwn 去逼近h d (n)=1/2π⎰π20H d (e jw )e jwn dw即h(n)=h d (n)w (n ) (一)几种常用的窗函数1、矩形窗 w(n)=R N (n)2、Hanning 窗 w(n)=0.5[1-cos(2πn /N-1)]R N (n)3、Hamming 窗 w(n)=[0.54-0.46cos(2πn /N-1)]R N (n)4、Blackman 窗 w(n)=[0.42-0.5 cos(2πn /N-1)+0.08 cos(4πn /N-1)] R N (n)5、Kaiser 窗 w(n)=I 0(β(1-[(2n /(N-1))-1]2)½)/I 0(β)(二)窗函数法设计线性相位FIR 滤波器的步骤1、确定数字滤波器的性能要求。
确定各临界频率{w k }和滤波器单位脉冲响应长度N 。
2、根据性能要求和N 值,合理地选择单位脉冲响应h(n)有奇偶对称性,从而确定理想频率响应h d (e jw )的幅频特性和相位特性。
3、用傅里叶反变换公式求得理想单位脉冲响应h d (n)。
4、选择适当的窗函数W (n ),求得所设计的FIR 滤波器单位脉冲响应。
5、用傅里叶变换求得其频率响应H (e jw ),分析它的幅频特性,若不满足要求,可适当改变窗函数形式或长度N ,重复上述过程,直至得到满意的结果。
三、实验内容和步骤1、分别用矩形窗、Hanning 窗、Hamming 窗、Blackman 窗、Kaiser 窗(β=8.5)设计一个长度N=8的线性相位FIR 滤波器。