滤波器设计步骤及实现程序
FIR滤波器设计C语言程序

FIR滤波器设计C语言程序FIR滤波器设计C语言程序1. 引言2. FIR滤波器原理FIR滤波器的输入输出关系可以表示为以下方程:y[n] = h[0]x[n] + h[1]x[n-1] + + h[M]x[n-M]其中,y[n]为输出信号,x[n]为输入信号,h为FIR滤波器的系数向量,M为滤波器的阶数。
3. 窗函数法设计FIR滤波器窗函数法是一种简单有效的FIR滤波器设计方法,其思想是通过加窗和傅里叶变换来确定滤波器系数。
步骤如下:1. 确定滤波器的阶数M,一般通过信号频率响应要求来确定。
2. 选择一个窗函数(如矩形窗、汉宁窗等)。
3. 根据窗函数的性质和滤波器的阶数,计算出滤波器的理想频率响应h_ideal。
4. 使用傅里叶变换将理想频率响应转换为时间域的滤波器系数h。
5. 对h进行归一化处理,得到最终的滤波器系数。
4. C语言程序实现下面给出一个简单的C语言程序,实现了FIR滤波器的设计过程。
cinclude <stdio.h>include <math.h>define N 1000 // 输入信号长度define M 50 // 滤波器阶数void fir_filter(float x, float h, float y) {int i, j;for (i = 0; i < N; i++) {y[i] = 0;for (j = 0; j < M; j++) {if (i >= j) {y[i] += h[j] x[i j];}}}}int mn() {float x[N]; // 输入信号float h[M]; // 滤波器系数float y[N]; // 输出信号int i;// 输入信号和滤波器系数for (i = 0; i < N; i++) {x[i] = sin(2 M_PI 1000 i / N) + sin(2 M_PI 2000 i / N); // 两个正弦信号叠加}for (i = 0; i < M; i++) {h[i] = 1.0 / M; // 简单的均值滤波器}// 调用FIR滤波函数fir_filter(x, h, y);// 输出滤波后的信号for (i = 0; i < N; i++) { printf(\。
低通滤波器的设计与实现

低通滤波器的设计与实现在信号处理和通信系统中,滤波器是一种重要的工具,用于调整信号的频率分量以满足特定的需求。
低通滤波器是一种常见的滤波器类型,它能够通过去除高于截止频率的信号分量,使得低频信号得以通过。
本文将探讨低通滤波器的设计原理和实现方法。
一、低通滤波器的设计原理低通滤波器的设计基于滤波器的频率响应特性,通过选择合适的滤波器参数来实现对信号频谱的调整。
常见的低通滤波器有巴特沃斯滤波器、切比雪夫滤波器和椭圆滤波器。
1. 巴特沃斯滤波器巴特沃斯滤波器是一种常见的低通滤波器,具有平坦的幅频特性,在通带内没有波纹。
其特点是递归性质,可以通过级联一阶巴特沃斯滤波器得到高阶滤波器。
巴特沃斯滤波器的设计需要确定截止频率和阶数两个参数。
截止频率确定了滤波器的频率范围,阶数决定了滤波器的陡峭程度。
常用的巴特沃斯滤波器设计方法有极点分布法和频率转换法。
2. 切比雪夫滤波器切比雪夫滤波器是一种具有优异滚降特性的低通滤波器,可以实现更陡峭的截止特性。
与巴特沃斯滤波器相比,切比雪夫滤波器在通带内存在波纹。
切比雪夫滤波器的设计需要确定截止频率、最大允许通带波纹和阶数三个参数。
最大允许通带波纹决定了滤波器的陡峭程度。
常用的切比雪夫滤波器设计方法有递归法和非递归法。
3. 椭圆滤波器椭圆滤波器是一种折衷设计,可以实现更陡峭的截止特性和更窄的过渡带宽度。
与切比雪夫滤波器相比,椭圆滤波器在通带内和阻带内都存在波纹。
椭圆滤波器的设计需要确定截止频率、最大允许通带和阻带波纹、过渡带宽和阶数五个参数。
最大允许通带和阻带波纹决定了滤波器的陡峭程度,过渡带宽决定了滤波器的频率选择性。
常用的椭圆滤波器设计方法有变换域设计法和模拟滤波器转换法。
二、低通滤波器的实现方法低通滤波器的实现方法多种多样,常见的包括模拟滤波器和数字滤波器两类。
1. 模拟滤波器模拟滤波器是基于模拟电路实现的滤波器,其输入和输出信号都是连续的模拟信号。
常见的模拟滤波器包括电容滤波器、电感滤波器和LC滤波器。
实验二IR数字滤波器设计与实现

实验二IIR数字滤波器设计与实现一.实验目的.1. 学会调用DSPM程序设计IIR数字滤波器,并给出H(z)的具体表达式。
2. 学会将滤波器“系数”与滤波汇编程序结合,编译、链接、装入DSP试验箱电路板内存,并装入DSP芯片运行,完成对模拟信号的采样进行滤波。
3. 通过改变信号源信号频率,观察滤波后信号的衰减情况与信号频率的关系,体会滤波器的工作原理。
二.实验原理1.调用DSP试验箱配套的Matlab源程序DSPM,通过自己给定IIR数字滤波器关键参数(f p,f st,f s, N,A p,A s等)由计算机系统完成IIR数字滤波器H(z)函数系数的计算,并给出(b0,b1,…b M,a1,…a N)。
2.通过将(b0,b1,…b M,a1,…a;f s, N )与滤波器汇编程序结合,并编译、链接、装入DSP试验箱电路板内存,并装入DSP芯片运行实现对信号的滤波,这一系列过程均在DSPM程序管理下自动进行。
3.滤波效果的检验,可通过改变信号源频率、观察输出信号在示波器屏上衰减情况来完成。
三.实验任务1.进一步熟悉DSP实验箱电路各模块的功能。
2.能独立完成实验一所提的软件安装过程。
3.设计一个IIR数字滤波器,要求Fs=64kHz,fp=3000Hz,N=3,调用DSPM完成设计,记录相关参数,并给出H(z)的具体表达式。
4.调用DSP.exe程序,实现对信号的滤波。
5.记录信号开始衰减的频率及信号衰减为0.7、0.5、0.1各处相应的信号频率。
6.信号分别选为三角波,正弦波,方波,调整信号频率,观察记录输出信号波形及输入信号频率及示波器通带截止频率的关系。
四.试验设备及准备1.所用设备:DSP试验箱,微机,示波器。
2.连线微机------------ DSP实验箱(COM口)示波器:CH1---------信号源CH2---------D/A输出(TPD05)DSP实验箱电路板:A/D:PA01-------TP501(信号源)PA02-------GN DP A03-------TP902(DSP串口1收数据)1)PA04-------TP911(FSR1)PA05-------TP913(BCLKD/A:PD01------TP905(DX0)PD02-------TP908(BCLK0)PD03-------TP907(FS0)五.试验数据分析1.画所设计的IIR滤波器的幅频特性曲线。
基于Matlab的FIR滤波器设计与实现

二、实验平台Matlab7.1三、实验原理以低通滤波器为例,其常用的设计指标有:1.通带边缘频率f p(数字频率为Ωp)2.阻带边缘频率f st (数字频率为Ωst)3.通带内最大纹波衰减δp=-20log10(1-αp),单位为dB4.阻带最小衰减αs=-20log10(αs),单位为dB5.阻带起伏αs6.通带峰值起伏αp其中,以1、2、3、4条最为常用。
5、6条在程序中估算滤波器阶数等参数时会用到。
数字频率= 模拟频率/采样频率四、实例分析例1 用凯塞窗设计一FIR低通滤波器,通带边界频率Ωp=0.3pi,阻带边界频率Ωs=0.5pi,阻带衰减δs不小于50dB。
方法一:手动计算滤波器阶数N和β值,之后在通过程序设计出滤波器。
第一步:通过过渡带宽度和阻带衰减,计算滤波器的阶数B和β值。
第二步:通过程序设计滤波器。
程序如下:b = fir1(29,0.4,kaiser(30,4.55));[h1,w1]=freqz(b,1);figure (1)plot(w1/pi, abs(h1));grid;xlabel('归一化频率/p') ;ylabel('幅度/dB') ;figure (2)plot(w1/pi,angle(h1));grid;xlabel('归一化频率/p') ;ylabel('相位') ;波形如下:例2 利用雷米兹交替算法设计等波纹滤波器,设计一个线性相位低通FIR数字滤波器,其指标为:通带边界频率fc=800Hz,阻带边界fr=1000Hz,通带波动阻带最小衰减At=40dB,采样频率fs=4000Hz。
一般调用MATLAB信号处理工具箱函数remezord来计算等波纹滤波器阶数N和加权函数W (ω),调用函数remez可进行等波纹滤波器的设计,直接求出滤波器系数。
函数remezord中的数组fedge为通带和阻带边界频率,数组mval是两个边界处的幅值,而数组dev是通带和阻带的波动,fs是采样频率单位为Hz。
切比雪夫1型数字滤波器的设计及滤波过程

切比雪夫1型数字滤波器的设计及滤波过程切比雪夫1型低通模拟滤波器的幅度平方函数为:)(11)(2222|)(|ΩΩΩ+==ΩpNCj H Aa ε其中ε表示通带内幅度波动的程度,ε越大,波动幅度也越大。
1101.0-=Apε)(x CN称为N 阶切比雪夫多项式。
1、滤波器设计及结果如下IIR-DF 滤波器设计(切比雪夫1型)(1) 切比雪夫1型低通数字滤波器的损耗函数曲线、滤波分离出的DSB 信号的时域波形及其频谱如下:0.10.20.30.40.50.60.70.80.91-100-90-80-70-60-50-40-30-20-100w/π幅度/d B切比雪夫1型模拟低通滤波器的幅频响应曲线00.010.020.030.040.050.060.070.08-1-0.500.51t/sy 1(t )y1(t)的时域波形f/Hz幅度y1(t)的频谱其中阶数N=7(2) 切比雪夫1型带通数字滤波器的损耗函数曲线、滤波分离出的DSB 信号的时域波形及其频谱如下:0.10.20.30.40.50.60.70.80.91-100-90-80-70-60-50-40-30-20-100w/幅度/d B切比雪夫1型带通数字滤波器幅频响应曲线0.010.020.030.040.050.060.070.08-1-0.500.51t/sy 2(t )y2(t)的时域波形200400600800100012001400160018002000f/Hz幅度y2(t)的频谱其中阶数N=8(3)切比雪夫1型高通数字滤波器的损耗函数曲线、滤波分离出的DSB 信号的时域波形及其频谱如下:0.10.20.30.40.50.60.70.80.91-100-90-80-70-60-50-40-30-20-100w/幅度/d B切比雪夫1型高通数字滤波器幅频响应曲线0.010.020.030.040.050.060.070.08-1-0.500.51t/sy 3(t )y3(t)的时域波形f/Hz幅度y3(t)的频谱其中N=73、结果分析特点:误差值在规定的频段上等波纹变化。
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,所以查了一些资料,但还是觉得很不明白;在写课设报告过程中,越写越觉得自己很无知,平时学习不扎实,对各种知识点没有进行及时积累与总结,导致做课设时临时抱佛脚;以后一定要认真学习,拓展学习知识面,也要加强团队合作与沟通;。
课程设计_低通滤波器设计(含matlab程序)

2010/2011学年第 2 学期学院:信息与通信工程学院专业:电子信息科学与技术学生姓名:学号:课程设计题目:低通滤波器设计起迄日期: 6 月 13 日~6月 24日课程设计地点:指导教师:系主任:下达任务书日期: 2011 年 6 月12 日课程设计任务书课程设计任务书目录1 设计目的及要 (5)1.1设计目的 (5)1.2设计内容和要求 (5)2设计原理 (5)2.1 FIR滤波器 (5)2.2窗函数 (6)2.3矩形窗 (7)3设计过程 (8)3.1设计流程图 (8)3.2 产生原始信号并分析频谱 (8)3.3 使用矩形窗设计不同特性的数字滤波器 (10)3.4 信号滤波处理 (11)4 实验结果及分析 (12)5 课程设计心得体会 (12)6 参考文献 (13)附录: (14)低通滤波器的设计1 设计目的及要求1.1设计目的设计一种低通滤波器并对信号进行滤波。
低通滤波器的作用是滤去信号中的中频和高频成分,增强低频成分。
要求做到:1.了解MATLAB的信号处理技术;2.使用MATLAB设计低通滤波器,掌握其滤波处理技术;3.对滤波前和滤波后的波形进行时域和频域比较。
1.2设计内容和要求1.熟悉有关采样,频谱分析的理论知识,对信号作频谱分析;2.熟悉有关滤波器设计理论知识,选择合适的滤波器技术指标,设计低通滤波器对信号进行滤波,对比分析滤波前后信号的频谱;3.实现信号频谱分析和滤波等有关MATLAB函数;2设计原理本次课程设计,我们主要是基于矩形窗的FIR滤波器来设计一个低通滤波器。
2.1 FIR滤波器FIR滤波器即有限抽样响应因果系统,其单位抽样响应h<n>是有限长的;极点皆位于z=0处;结构上不存在输出到输入的反馈,是非递归型的。
其系统函数表示为:普通的FIR滤波器系统的差分方程为:式中:N为FIR滤波器的抽头数;x<n>为第n时刻的输入样本;h<i>为FIR滤波器第i级抽头系数。
四种IIR数字滤波器设计的核心程序(VB-程序)

IIR 数字滤波器的核心程序'这里提供双线性变换法设计四种IIR数字滤波器的核心程序。
这四种滤波器是1.巴特沃思滤波器 2. 切比雪夫1型滤波器3. 切比雪夫2型滤波器4. 椭圆滤波器图1、2示出以上几种滤波器的程序框图。
图1图2`' 使用双线性变换法的 Butterworth 型 IIR 数字滤波器设计程序'' 形参说明如下:'' PbType ----------- 输入整型量,滤波器通带类型:' PbType = 0 : 低通滤波器;' PbType = 1 : 高通滤波器;' PbType = 2 : 带通滤波器;' PbType = 3 : 带阻滤波器.' fp1 ----------- 输入双精度量, 低通或高通滤波器的通带边界频率( Hz ); 带通或带阻滤波器的通带低端边‘界频率( Hz ).' fp2 ----------- 输入双精度量, 带通或带阻滤波器的通带低端边界频率( Hz ).' Apass -----------输入双精度量, 通带衰减( dB ).' fs1 ----------- 输入双精度量, 低通或高通滤波器的阻带边界频率( Hz ); 带通或带阻滤波器的阻带高端边‘界频率( Hz ).' fs2 ----------- 输入双精度量, 带通或带阻滤波器的阻带高端边界频率( Hz ).' Astop ----------- 输入双精度量, 阻带衰减( dB ).' fsamp ----------- 输入双精度量, 采样频率( Hz ).' points ----------- 输入整型量, 幅频特性计算点数.' ord ----------- 输入整型量, 滤波器阶数.' NumSec( ) -------- 输出双精度量, 转移函数二阶节的分子多项式系数二维数组.' 元素NumSec( k, i ) 中,' k : 二阶节序号;' i : 多项式系数, i = 0 相应于常数项.' DenSec( ) -------- 输出双精度量转移函数二阶节的分母多项式系数二维数组.' 元素DenSec( k, i ) 中,' k : 二阶节序号;' i : 多项式系数, i = 0 相应于常数项.' NumSec_Z( ) ------ 输出双精度量系统函数二阶节的分子多项式系数二维数组.' 元素NumSec_Z( k, i ) 中,' k : 二阶节序号;' i : 多项式系数, i = 0 相应于常数项.' DenSec_Z( ) ------ 输出双精度量系统函数二阶节的分母多项式系数二维数组.' 元素DenSec_Z( k, i ) 中,' k : 二阶节序号;' i : 多项式系数, i = 0 相应于常数项.' AR( ) ------------ 输出双精度量,滤波器的幅频特性数组.'Sub Butterworth(PbType As Integer, fp1 As Double, fp2 As Double, Apass As Double, fs1 As Double, fs2 As Double, Astop As Double, fsamp As Double, points As Integer, ord As Integer, NumSec() As Double, DenSec() As Double, NumSec_Z() As Double, DenSec_Z() As Double, AR() As Double)Dim i%, j%, k%, ord_t%Dim angle#, emp1#, temp2#, temp3#Dim ratio(0 To 50) As Double''''''''''''''''''''If PbType = 0 Then ' 低通滤波器;wpass = 2# * Pi * fpass / fsamp: wstop = 2# * Pi * fstop / fsamp ' 通带、阻带边界频率omikaP = Tan(wpass / 2#): omikaS = Tan(wstop / 2#)epass = epson(Apass): estop = epson(Astop)' 根据对幅频特性的技术要求,计算模拟滤波器的阶数orde = Ne_B(estop, epass, omikaS, omikaP)ord = Fix(orde) + 1omk0 = omika0(omikaP, epass, ord)' 调用Fz_LP 子程序,将低通模拟滤波器的转移函数变量s 映射为低通数字滤波器的系统函数变量z Call Fz_LP(F1(), F2(), ord_t) 'End If''''''''''''''''''''If PbType = 1 Then ' 高通滤波器;wpass = 2# * Pi * fpass / fsamp: wstop = 2# * Pi * fstop / fsamp ' 通带、阻带边界频率omikaP = 1# / Tan(wpass / 2#): omikaS = 1# / Tan(wstop / 2#)epass = epson(Apass): estop = epson(Astop)' 根据对幅频特性的技术要求,计算模拟滤波器的阶数orde = Ne_B(estop, epass, omikaS, omikaP)ord = Fix(orde) + 1omk0 = omika0(omikaP, epass, ord)' 调用Fz_HP 子程序,将高通模拟滤波器的转移函数变量s 映射为高通数字滤波器的系统函数变量z Call Fz_HP(F1(), F2(), ord_t)End If''''''''''''''''''''If PbType = 2 Then ' 带通滤波器;wp1 = 2# * Pi * fp1 / fsamp: wp2 = 2# * Pi * fp2 / fsamp ' 通带上下边界频率ws1 = 2# * Pi * fs1 / fsamp: ws2 = 2# * Pi * fs2 / fsamp ' 阻带上下边界频率Ci = BpC(wp1, wp2)omikaP = Abs((Ci - Cos(wp2)) / Sin(wp2))omikaS1 = Abs((Ci - Cos(ws1)) / Sin(ws1))omikaS2 = Abs((Ci - Cos(ws2)) / Sin(ws2))If omikaS1 <= omikaS2 ThenomikaS = omikaS1ElseomikaS = omikaS2End Ifepass = epson(Apass): estop = epson(Astop)' 根据对幅频特性的技术要求,计算模拟滤波器的阶数orde = Ne_B(estop, epass, omikaS, omikaP)ord = Fix(orde) + 1omk0 = omika0(omikaP, epass, ord)' 调用Fz_BP 子程序,将带通模拟滤波器的转移函数变量s 映射为带通数字滤波器的系统函数变量z Call Fz_BP(fp1, fp2, fsamp, F1(), F2(), ord_t)End If''''''''''''''''''''If PbType = 3 Then ' 带阻滤波器;wp1 = 2# * Pi * fp1 / fsamp: wp2 = 2# * Pi * fp2 / fsamp ' 通带上下边界频率ws1 = 2# * Pi * fs1 / fsamp: ws2 = 2# * Pi * fs2 / fsamp ' 阻带上下边界频率Ci = BpC(wp1, wp2)omikaP = Abs(Sin(wp2) / (Cos(wp2) - Ci))omikaS1 = Sin(ws1) / (Cos(ws1) - Ci)omikaS2 = Sin(ws2) / (Cos(ws2) - Ci)If Abs(omikaS1) <= Abs(omikaS2) ThenomikaS = Abs(omikaS1)ElseomikaS = Abs(omikaS2)End Ifepass = epson(Apass): estop = epson(Astop)' 根据对幅频特性的技术要求,计算模拟滤波器的阶数orde = Ne_B(estop, epass, omikaS, omikaP)ord = Fix(orde) + 1omk0 = omika0(omikaP, epass, ord)' 调用Fz_BS 子程序,将带阻模拟滤波器的转移函数变量s 映射为带阻数字滤波器的系统函数变量z Call Fz_BS(fp1, fp2, fsamp, F1(), F2(), ord_t)End If''''''''''''''''''''If ord Mod 2 <> 0 Then' 滤波器系统函数的阶数为奇数时,级联节的起始序号为0(序号为0 的级联节是一阶节,其余为‘二阶节)start = 0Else' 滤波器系统函数的阶数为偶数时,级联节的起始序号为1(级联节都是二阶节,没有一阶节)start = 1End IfNR = ord \ 2' 系统函数由一阶、二阶节级联而成,k 是节序号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字滤波器的设计步骤及程序实现湖南理工学院信息与通信工程学院一、IIR 脉冲响应不变法设计步骤1、已知实际数字指标as s ap p ,,,ωω2、将数字指标化为原型模拟指标As s Ap p ,,,ΩΩ,可设T=pi, T /ω=Ω3、求原型模拟滤波器的c N Ω,,其中:⎥⎥⎤⎢⎢⎡ΩΩ--=)/lg(2)]110/()110lg[(10/10/sp A A s p NNA pcp p 210/110-Ω=Ω NA scs s 210/110-Ω=Ω ][cs cp c ΩΩ∈Ω,4、根据N 写出归一化原型系统函数)(p G a5、用c s p Ω=/代入得原型系统函数cs p a a p G s H Ω==/)()(6、将)(s H a 化为部分分式展开形式∑-=kka s s A s H )(7、写出)(z H 的极点Ts k k ez =,并写出)(z H 的部分分式展开形式∑--⋅=11)(z z A T z H kk8、将)(z H 化为分子分母形式,验证设计结果。
二、IIR 双线性变换法设计步骤1、已知实际数字指标as s ap p ,,,ωω2、将数字指标化为原型模拟指标As s Ap p ,,,ΩΩ,可设T=2, 2tan 2ω⋅=ΩT 3、求原型模拟滤波器的c N Ω,,其中:⎥⎥⎤⎢⎢⎡ΩΩ--=)/lg(2)]110/()110lg[(10/10/s p A A s p NNA pcp p 210/110-Ω=Ω NA scs s 210/110-Ω=Ω ][cs cp c ΩΩ∈Ω,4、根据N 写出归一化原型系统函数)(p G a5、用c s p Ω=/代入得原型系统函数cs p a a p G s H Ω==/)()(6、用11112--+-⋅=Z Z T s 代入原型系统函数)(s H a 得11112)()(--+-⋅==Z Z Ts a s H z H 8、将)(z H 整理成分子分母形式,验证设计结果。
三、FIR 窗函数法设计步骤1、已知实际数字指标as s ap p ,,,ωω2、根据as 选窗的类型:矩形窗as<21dB, A=1.8π,窗函数是 boxcar(N);三角窗as<25dB, A=6.1π,窗函数是 bartlett(N);汉宁窗as<44dB, A=6.2π,窗函数是 hanning(N);哈明窗as<53dB, A=6.6π,窗函数是 hamming(N);布莱克曼窗as<74dB, A=11π,窗函数是 blackman(N)。
3、根据过渡带p s B t ωω-=和窗类型求总点数t B A N /≈。
4、根据2/)(s p c ωωω+=写出理想频响指标)()()(ωθωωj dg j d e H e H ⋅=5、根据)(ωj d eH 算出ωπωππωd e e H n h n j j d d ⎰-⋅=)(21)( 6、对)(n h d 加窗得设计结果)()()(n w n h n h d ⋅=8、写出∑-=nzn h z H )()(,验证设计结果。
四、FIR 频率采样法设计步骤1、已知实际数字指标as s ap p ,,,ωω2、根据as 选过渡带点数m3、根据过渡带p s B t ωω-=和过渡带点数m 求总点数t B m N /2)1(π⋅+≥。
4、根据c ω求出πω2Nk c c ⋅=,设置过渡值)1 0(,∈T 5、根据约束条件构建理想频响的采样指标)()()(k j g d e k H k H θ⋅=6、对)(k H d 进行IDFT 变换得)(n h ,取实部。
7、写出∑-=nzn h z H )()(,验证设计结果,优化过渡值大小、过渡点位置和过渡点多少。
一、IIR滤波器设计:脉冲响应不变法实现程序%用脉冲响应不变法设计butterworth数字低通滤波器%技术指标:wp=0.3*pi rad, ap=2dB, ws=0.5*pi rad, as=10dBclc; clear; close all; format compact;%程序初始化wp=0.3*pi, ap=2, ws=0.5*pi, as=10,%输入数字指标T=pi,%假设采样周期,用于设计原型模拟滤波器,不影响H(z)的设计结果Wp=wp/T, Ap=ap, Ws=ws/T, As=as,%将数字指标转化为原型模拟指标M=log10( (10 .^ (0.1*Ap) - 1)./(10 .^ (0.1*As) - 1) ) / ...(2*log10(Wp/Ws)) ,%计算滤波器阶数N = ceil( M),%滤波器阶数向上取整Wcp = Wp / ( (10^(.1*Ap) - 1)^(1/(2*N))),%通带边界精确满足的截止频率Wcs = Ws / ( (10^(.1*As) - 1)^(1/(2*N))),%阻带边界精确满足的截止频率Wc=Wcp,%截止频率用通带边界精确满足的截止频率%Wc=(Wcp+Wcs)/2,%通带阻带边界都有余量的截止频率%Wc=Wcs,%截止频率用阻带边界精确满足的截止频率[bp,ap]=butter(N,1,'s'),%求归一化原型滤波器系统函数Ga(p)P157tf(bp,ap,'variable','p'),%显示Ga(p)[bs,as]=lp2lp(bp,ap,Wc),%去归一化得原型滤波器系统函数Ha(s)tf(bs,as),%显示Ha(s),分子不足前面补0[Ak,sk]=residue(bs,as),%将Ha(s)按部分分式形式展开ak=T*Ak,zk=exp(sk*T),%将Ha(s)的部分分式参数转换为H(z)的部分分式参数[bz,az]=residuez(ak,zk,0),%将H(z)的部分分式形式化为分子分母等阶形式tf(bz,az,'variable','z^-1'),%显示系统函数%[bz1,az1] = impinvar(bs,as,1/T)%调用impinvar函数验证%tf(bz1,az1,'variable','z^-1'),%显示验证系统函数,z^-1式的分子不足是后面补0freqz(bz,az,100),%绘出频率特性曲线,检验设计指标二、IIR滤波器设计:双线性变换法实现程序%用双线性变换法设计butterworth数字低通滤波器%技术指标:wp=0.3*pi rad, ap=2dB, ws=0.5*pi rad, as=10dBclc; clear; close all; format compact;%程序初始化wp=0.3*pi, ap=2, ws=0.5*pi, as=10,%输入数字指标T=2,%假设采样周期,用于设计原型模拟滤波器,不影响H(z)的设计结果Wp=(2/T)*tan(wp/2), Ap=ap,Ws=(2/T)*tan(ws/2),As=as,%将数字指标预畸变成原型模拟指标M=log10( (10 .^ (0.1*Ap) - 1)./(10 .^ (0.1*As) - 1) ) / ...(2*log10(Wp/Ws)) ,%计算滤波器阶数N = ceil( M),%滤波器阶数向上取整Wcp = Wp / ( (10^(.1*Ap) - 1)^(1/(2*N))),%通带边界精确满足的截止频率Wcs = Ws / ( (10^(.1*As) - 1)^(1/(2*N))),%阻带边界精确满足的截止频率Wc=Wcp,%截止频率用通带边界精确满足的截止频率%Wc=(Wcp+Wcs)/2,%通带阻带边界都有余量的截止频率%Wc=Wcs,%截止频率用阻带边界精确满足的截止频率[bp,ap]=butter(N,1,'s'),%求归一化原型滤波器系统函数Ga(p)P157tf(bp,ap,'variable','p'),%显示Ga(p)[bs,as]=lp2lp(bp,ap,Wc),%去归一化得原型滤波器系统函数Ha(s)tf(bs,as),%显示Ha(s),分子不足前面补0[bz,az] = bilinear (bs,as,1/T),%将模拟低通原型转换为数字低通tf(bz,az,'variable','z^-1'),%显示系统函数freqz(bz,az,100),%绘出频率特性曲线,检验设计指标三、FIR滤波器设计:窗函数法实现程序%用窗函数法设计数字低通滤波器%技术指标:wp=0.27*pi rad, ap=2dB, ws=0.40*pi rad, as=10dB。
clc; clear; close all; format compact;%程序初始化wp=0.27*pi, ap=2, ws=0.40*pi, as=10,%输入数字指标%根据as选择窗函数的类型并输入参数A,计算窗口长度M%矩形窗as<21dB,A=1.8*pi,窗函数是boxcar(N)%三角窗as<25dB,A=6.1*pi,窗函数是bartlett(N)%汉宁窗as<44dB,A=6.2*pi,窗函数是hanning(N)%哈明窗as<53dB,A=6.6*pi,窗函数是hamming(N)%布莱克曼窗as<74dB,A=11*pi,窗函数是blackman(N)A=1.8*pi,%因as=10dB选矩形窗Bt=ws-wp; %计算过渡带宽M=ceil(A/Bt);%根据窗函数的类型计算长度if mod(M,2)==0; N=M+1, else N=M, end; %选用第一类滤波器wc=(wp+ws)/2, %转折频率一般取通带频率和阻带频率的中点n=-30:40;r=(N-1)/2; %用于计算理想低通单位脉冲响应中数据hdn=sin(wc*((n-r)+eps))./(pi*((n-r)+eps)); %参见教材P202求理想单位脉冲响应wn=boxcar(N); %窗函数数据m=0:N-1;r=(N-1)/2; hm=sin(wc*((m-r)+eps))./(pi*((m-r)+eps));hn=hm'.*wn; %理想单位脉冲响应加窗处理figure(1),%绘加窗处理过程图subplot(3,1,1),stem(n,hdn,'r.'),grid on ,axis([-15,30,-0.2,0.5])subplot(3,1,2),stem([0:N-1],wn,'.'),grid on ,axis([-15,30,-0.4,1.4])subplot(3,1,3),stem([0:N-1],hn,'k.'),grid on ,axis([-15,30,-0.2,0.5])figure(2);freqz(hn,1,100);% 绘频率特性曲线图,检验设计指标figure(3),%绘幅度响应函数Hg(ω)图Hejw=fft(hn,256); %计算频率响应函数k=[0:255];wk=2*pi/256*k;Hgw=(Hejw.').*exp(j*wk*(N-1)/2); %计算幅频响应plot(wk/pi,real(Hgw));xlabel('ω/π');ylabel('Hg(ω)');%绘图四、FIR滤波器设计:频率采样法实现程序%用频率采样法设计FIR低通滤波器%技术指标:wc=0.3*pi rad, N=15,不加过渡点clc; clear; close all; format compact;%程序初始化wc=0.3*pi;N=15;%设计阶数N为奇的第一类滤波器%根据约束条件确定H(k)的值k=[0:N-1],w=2*pi/N*k;kc=fix(wc*N/(2*pi)),%求频点及转折频率对应的k值Hk_abs=[ones(1,kc+1),zeros(1,N-2*kc-1),ones(1,kc)],%采样频点幅值Hk_angles=-(N-1)/N*pi*k;%采样频点相位Hk= Hk_abs.*exp(j*Hk_angles);%采样频点的H(k)hn=real(ifft(Hk)),%求H(k)的IDFT得单位脉冲响—即设计结果%理解频域离散与时域的周期延拓n=-30:40;r=(N-1)/2;hdn1=sin(wc*((n-r)+eps))./(pi*((n-r)+eps)); %参见教材P202hdn2=sin(wc*((n-r)+N+eps))./(pi*((n-r)+N+eps)); %参见教材P202hdn3=sin(wc*((n-r)-N+eps))./(pi*((n-r)-N+eps)); %参见教材P202figure(1),%绘时域的周期延拓叠加图subplot(4,1,1),stem(n,hdn1,'r.'),grid on ,axis([-15,30,-0.1,0.4])subplot(4,1,2),stem(n,hdn2,'.'),grid on ,axis([-15,30,-0.1,0.4])subplot(4,1,3),stem(n,hdn3,'.'),grid on ,axis([-15,30,-0.1,0.4])subplot(4,1,4),stem([0:14],hn,'k.'),grid on ,axis([-15,30,-0.1,0.4])figure(2)%绘幅度谱变化过程图w1=[0,wc,wc+eps,2*pi-wc,2*pi-wc+eps,2*pi]/pi;xk=[1,1,0,0,1,1]plot(w1,xk,'r:'),xlabel('ω/π'),axis([0,2,-0.3,1.2])%绘理想幅频曲线hold on,stem(2/N*k, Hk_abs,'.'),%绘频率采样图%绘设计结果的幅频响应图Hejw=fft(hn,256); %计算频率响应K=[0:255];wk=2*pi/256*K;Hgw=Hejw.*exp(j*wk*(N-1)/2); %计算幅频响应hold on;plot(wk/pi,real(Hgw),'k');xlabel('ω/π');ylabel('Hg(ω)');%绘图。