滤波器设计步骤及实现程序
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 是节序号。
实验四IIR和FIR数字滤波器设计及软件实现实验报告
数字信号处理实验报告实验四IIR数字滤波器设计及软件实现(一) FIR数字滤波器设计及软件实现(二)2018 年 11 月 28 日一、实验目的(实验4_1)(1)熟悉用双线性变换法设计IIR数字滤波器的原理与方法;(2)学会调用MATLAB信号处理工具箱中滤波器设计函数(或滤波器设计分析工具fdatool)设计各种IIR数字滤波器,学会根据滤波需求确定滤波器指标参数。
(3)掌握IIR数字滤波器的MATLAB实现方法。
(4)通过观察滤波器输入输出信号的时域波形及其频谱,建立数字滤波的概念。
(实验4_2)(1)掌握用窗函数法设计FIR数字滤波器的原理和方法。
(2)掌握用等波纹最佳逼近法设计FIR数字滤波器的原理和方法。
(3)掌握FIR滤波器的快速卷积实现原理。
(4)学会调用MATLAB函数设计与实现FIR滤波器。
二、实验原理与方法(实验4_1)设计IIR数字滤波器一般采用间接法(脉冲响应不变法和双线性变换法),应用最广泛的是双线性变换法。
基本设计过程是:①先将给定的数字滤波器的指标转换成过渡模拟滤波器的指标;②设计过渡模拟滤波器;③将过渡模拟滤波器系统函数转换成数字滤波器的系统函数。
MATLAB信号处理工具箱中的各种IIR数字滤波器设计函数都是采用双线性变换法。
第六章介绍的滤波器设计函数butter、cheby1 、cheby2 和ellip可以分别被调用来直接设计巴特沃斯、切比雪夫1、切比雪夫2和椭圆模拟和数字滤波器。
本实验要求读者调用如上函数直接设计IIR数字滤波器。
本实验的数字滤波器的MATLAB实现是指调用MATLAB信号处理工具箱函数filter对给定的输入信号x(n)进行滤波,得到滤波后的输出信号y(n)。
3、实验内容及步骤(实验4_1)(1)调用信号产生函数mstg产生由三路抑制载波调幅信号相加构成的复合信号st,该函数还会自动绘图显示st的时域波形和幅频特性曲线,如图1所示。
由图可见,三路信号时域混叠无法在时域分离。
实验二滤波器设计
实验二基于MATLAB数字滤波器的设计1.示例基于MATLAB的语音信号分析与处理1.1实验目的综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应结论,再利用MATLAB作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。
1.2 实验基本要求●掌握数字信号处理的基本概念、基本理论和基本方法●掌握MATLAB设计FIR和IIR数字滤波器的方法●学会用MATLAB对信号进行分析与处理●学会MATLAB的使用,掌握MATLAB的程序设计方法●掌握在Windows环境下语音信号采集的方法1.3 实验内容和要求录制一段自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时候波形和频谱图;给定滤波器的性能指标,采用窗函数法或双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的语音信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号。
1.4 实验实现步骤(1)语音信号的采集利用Windows下的录音机或其他软件,录制一段自己的话音,时间控制在1s左右;然后在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。
通过使用wavread 函数,理解采样频率,采样位数等概念。
wavread 函数调用格式如下。
y=wavread(file),读取file 所规定的wav 文件,返回采样值放在向量y 中。
[y,fs,nbits]=wavread(file),采样值放在向量y 中,fs 表示采样频率(Hz ),n bits 表示采样位数y=wavread(file ,N)读取前N 点的采样值放在向量y 中。
y=wavread(file ,[N 1,N 2]),读取从N 1点到 N 2点的采样值放在向量y 中 (2)语音信号的频谱分析要求首先画出语音信号的时域波形,然后对语音信号进行频域分析,在MATLAB 中可以利用函数fft 对信号进行快速的傅立叶变换,从而得到信号的频谱特性,从而加深对频谱特性的理解。
基于MATLAB的自适应滤波器设计
基于MATLAB的自适应滤波器设计自适应滤波器是一种能够根据输入信号的特性自动调整滤波参数的滤波器。
它的核心思想是根据输入信号与期望输出信号之间的误差来更新滤波器的权值,从而实现对输入信号的准确滤波。
在MATLAB中,可以使用自适应滤波器工具箱来设计和实现自适应滤波器。
自适应滤波器工具箱提供了多种自适应滤波器算法的函数和工具,例如LMS(最小均方误差)算法、RLS(递归最小二乘)算法等。
下面以LMS算法为例,介绍如何基于MATLAB进行自适应滤波器设计。
首先,需要准备好输入信号和期望输出信号。
可以使用MATLAB的信号处理工具箱来生成具有特定频率和幅度的输入信号,或者使用已有的实验数据。
期望输出信号可以根据输入信号进行一定的处理得到,或者使用已有的实验数据。
然后,需要选择自适应滤波器的结构和算法。
在MATLAB中,可以使用`dsp.LMSFilter`类来实现LMS算法。
可以根据输入信号和期望输出信号的特性,选择自适应滤波器的阶数、步长等参数。
接下来,可以使用`dsp.LMSFilter`类的对象来进行自适应滤波器的初始化和更新。
可以通过调用`step`方法来实时更新滤波器的权值,并获取输出信号。
具体步骤如下:1. 创建`dsp.LMSFilter`对象,并指定滤波器的阶数和步长。
```matlablmsFilter = dsp.LMSFilter('Length', filterOrder, 'StepSize', stepSize);```2.初始化滤波器的权值。
```matlablmsFilter.Weights = initialWeights;```3.使用循环结构,依次读取输入信号的每个样本,并根据期望输出信号计算滤波器的权值,同时获取输出信号。
```matlabfor i = 1:length(inputSignal)[outputSignal, lmsFilter] = step(lmsFilter, inputSignal(i), desiredOutput(i));end```4.完成滤波器的更新后,可以获取最终的输出信号。
实验三IIR滤波器的设计与信号滤波
实验三 IIR 滤波器的设计与信号滤波1、实验目的(1)熟悉用双线性变换法设计IIR 数字滤波器的原理与方法。
(2)掌握数字滤波器的计算机仿真方法。
(3)通过观察对实际心电图信号的滤波作用,获得数字滤波的感性知识。
2、实验仪器:PC 机一台 MATLAB 软件3、实验原理利用双线性变换设计IIR 滤波器(只介绍巴特沃斯数字低通滤波器的设计),首先要设计出满足指标要求的模拟滤波器的传递函数)(s H a ,然后由)(s H a 通过双线性变换可得所要设计的IIR 滤波器的系统函数)(z H 。
如果给定的指标为数字滤波器的指标,则首先要转换成模拟滤波器的技术指标,这里主要是边界频率s p w w 和的转换,对s p αα和指标不作变化。
边界频率的转换关系为)21tan(2w T =Ω。
接着,按照模拟低通滤波器的技术指标根据相应设计公式求出滤波器的阶数N 和dB 3截止频率c Ω;根据阶数N 查巴特沃斯归一化低通滤波器参数表,得到归一化传输函数)(p H a ;最后,将c s p Ω=代入)(p H a 去归一,得到实际的模拟滤波器传输函数)(s H a 。
之后,通过双线性变换法转换公式11112--+-=zz T s ,得到所要设计的IIR 滤波器的系统函数)(z H 。
利用所设计的数字滤波器对实际的心电图采样信号进行数字滤波器。
4、实验步骤及内容(1)复习有关巴特沃斯模拟滤波器的设计和用双线性变换法设计IIR 数字滤波器的内容,用双线性变换法设计一个巴特沃斯IIR 低通数字滤波器。
设计指标参数为:在通带内频率低于π2.0时,最大衰减小于dB 1;在阻带内[]ππ,3.0频率区间上,最小衰减大于dB 15。
(2)绘制出数字滤波器的幅频响应特性曲线。
(3)用所设计的滤波器对实际心电图信号采样序列(实验数据在后面给出)进行仿真滤波处理,并分别绘制出滤波前后的心电图信号波形图,观察总结滤波作用与效果。
(4)输入为20Hz 正弦和200Hz 的正弦的叠加波形,要求用双线性变换法设计一巴特沃斯数字低通滤波器滤除200Hz 的正弦,使输出中只保留20Hz 的正弦波。
DSP滤波算法设计与实现
DSP滤波算法设计与实现DSP(Digital Signal Processing,数字信号处理)滤波算法在信号处理领域中起到了至关重要的作用。
滤波算法可以对信号进行分析、处理和改善,去除噪音、增强信号等。
本文将介绍DSP滤波算法的设计和实现原理,以及常见的滤波器类型和应用场景。
一、滤波算法设计原理1. 数字滤波器的基本原理数字滤波器将离散时间的输入信号转换为输出信号,其基本原理是通过对输入信号进行离散化和加权求和的过程来实现。
滤波器的核心是滤波器系数的选择和滤波器结构的设计。
2. 滤波器设计方法常用的数字滤波器设计方法包括频率抽样法、模拟滤波器转换法、窗函数法和优化算法等。
频率抽样法根据滤波器的频率响应特性进行设计,模拟滤波器转换法则是将模拟滤波器的设计方法应用于数字滤波器设计。
窗函数法通过选择适当的窗函数对滤波器的频率响应进行修正。
优化算法通过数学优化模型对滤波器进行设计。
二、常见的滤波器类型1. FIR滤波器FIR(Finite Impulse Response,有限冲激响应)滤波器是一种常见的数字滤波器类型。
它的特点是只有有限个非零响应值,不存在反馈路径。
FIR滤波器具有线性相位和稳定性,适用于广义线性相位要求的应用领域。
2. IIR滤波器IIR(Infinite Impulse Response,无限冲激响应)滤波器是另一种常见的数字滤波器类型。
它的特点是存在反馈路径,具有无限长的冲激响应。
IIR滤波器具有较小的滤波器阶数,可以实现较小的延迟,适用于实时性要求较高的应用领域。
三、滤波器的应用场景1. 语音信号处理在语音信号处理中,滤波器可以用于降噪、语音增强、语音识别等任务。
通过采用合适的滤波器设计和优化算法,可以提高语音信号的清晰度和可理解性。
2. 图像处理在图像处理中,滤波器可以用于图像去噪、边缘检测、图像增强等任务。
通过采用适当的滤波器类型和参数设置,可以去除图像中的噪音,提高图像的质量和细节。
FIR滤波器设计C语言程序
FIR滤波器设计C语言程序1.确定滤波器的设计规格:包括截止频率、通带衰减和阻带衰减等参数。
2.确定滤波器的阶数:滤波器的阶数决定了它对信号的滤波效果,一般通过经验或者设计规范来确定。
3. 确定滤波器的频率响应:可以通过Matlab等工具进行设计,也可以根据设计规范选择标准的频率响应曲线。
常见的设计方法包括窗函数法、最小最大设计法等。
4.根据频率响应设计滤波器的系数:根据频率响应的定义,可以使用反离散傅里叶变换(IDFT)计算滤波器的系数。
5.实现滤波器的差分方程:根据滤波器的差分方程,可以使用C语言编写对应的代码。
差分方程描述了滤波器的输入和输出之间的关系。
下面是一个简单的FIR滤波器设计的C语言程序示例:```c#include <stdio.h>#include <stdlib.h>#define N 10 // 滤波器的阶数//FIR滤波器系数float h[N] =0.1,0.2,0.3,0.4,0.5,0.4,0.3,0.2,0.1,0.05};//输入信号缓冲区float x[N] = {0};//输出信号float y = 0;//FIR滤波器函数float fir_filter(float input) int i;//将最新的输入信号插入到缓冲区for (i = N - 1; i > 0; i--)x[i]=x[i-1];}x[0] = input;//计算输出信号y=0;for (i = 0; i < N; i++)y+=h[i]*x[i];}return y;int main//输入信号float input_signal[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};//滤波后的输出信号float output_signal[10] = {0};int i;//对输入信号进行滤波for (i = 0; i < 10; i++)output_signal[i] = fir_filter(input_signal[i]);}//打印输出结果for (i = 0; i < 10; i++)printf("Output[%d] = %f\n", i, output_signal[i]);}return 0;```在上面的示例代码中,我们采用了一个长度为10的缓冲区来存储输入信号。
FIR滤波器设计与实现实验报告
FIR滤波器设计与实现实验报告目录一、实验概述 (2)1. 实验目的 (3)2. 实验原理 (3)3. 实验设备与工具 (4)4. 实验内容与步骤 (6)5. 实验数据与结果分析 (7)二、FIR滤波器设计 (8)1. 滤波器设计基本概念 (9)2. 系数求解方法 (10)频谱采样法 (11)最小均方误差法 (14)3. 常用FIR滤波器类型 (15)线性相位FIR滤波器 (16)非线性相位FIR滤波器 (18)4. 设计实例与比较 (19)三、FIR滤波器实现 (20)1. 硬件实现基础 (21)2. 软件实现方法 (22)3. 实现过程中的关键问题与解决方案 (23)4. 滤波器性能评估指标 (25)四、实验结果与分析 (26)1. 实验数据记录与处理 (27)2. 滤波器性能测试与分析 (29)通带波动 (30)虚部衰减 (31)相位失真 (32)3. 与其他设计方案的对比与讨论 (33)五、总结与展望 (34)1. 实验成果总结 (35)2. 存在问题与不足 (36)3. 未来发展方向与改进措施 (37)一、实验概述本次实验的主要目标是设计并实现一个有限脉冲响应(Finite Impulse Response,简称FIR)滤波器。
FIR滤波器是数字信号处理中常用的一种滤波器,具有线性相位响应和易于设计的优点。
本次实验旨在通过实践加深我们对FIR滤波器设计和实现过程的理解,提升我们的实践能力和问题解决能力。
在实验过程中,我们将首先理解FIR滤波器的基本原理和特性,包括其工作原理、设计方法和性能指标。
我们将选择合适的实验工具和环境,例如MATLAB或Python等编程环境,进行FIR滤波器的设计。
我们还将关注滤波器的实现过程,包括代码编写、性能测试和结果分析等步骤。
通过这次实验,我们期望能够深入理解FIR滤波器的设计和实现过程,并能够将理论知识应用到实践中,提高我们的工程实践能力。
本次实验报告将按照“设计原理设计方法实现过程实验结果与分析”的逻辑结构进行组织,让读者能够清晰地了解我们实验的全过程,以及我们从中获得的收获和启示。
iir数字滤波器设计及c语言程序
iir数字滤波器设计及c语言程序IIR数字滤波器设计及C语言程序IIR(Infinite Impulse Response)数字滤波器是一种常用的数字信号处理技术,广泛应用于音频处理、图像处理、通信系统等领域。
本文将介绍IIR数字滤波器的设计原理,并给出相应的C语言程序实现。
一、IIR数字滤波器的设计原理IIR数字滤波器的设计基于差分方程,其输入信号和输出信号之间存在一定的差分关系。
相比于FIR(Finite Impulse Response)数字滤波器,IIR数字滤波器具有更窄的转换带宽、更高的滤波器阶数和更好的相位响应等特点。
IIR数字滤波器的设计主要包括两个关键步骤:滤波器规格确定和滤波器参数计算。
首先,根据实际需求确定滤波器的类型(低通、高通、带通或带阻)、截止频率、通带衰减和阻带衰减等规格。
然后,根据这些规格利用数字滤波器设计方法计算出滤波器的系数,从而实现对输入信号的滤波。
二、IIR数字滤波器的设计方法常见的IIR数字滤波器设计方法有脉冲响应不变法、双线性变换法和最小均方误差法等。
下面以最常用的脉冲响应不变法为例介绍设计方法。
脉冲响应不变法的基本思想是将模拟滤波器的脉冲响应与数字滤波器的单位脉冲响应进行匹配。
首先,根据模拟滤波器的传递函数H(s)确定其脉冲响应h(t)。
然后,将连续时间下的脉冲响应离散化,得到离散时间下的单位脉冲响应h[n]。
接下来,根据单位脉冲响应h[n]计算出数字滤波器的差分方程系数,从而得到滤波器的数字表示。
三、IIR数字滤波器的C语言程序实现下面给出一个简单的IIR数字滤波器的C语言程序实现示例,以低通滤波器为例:```c#include <stdio.h>#define N 100 // 输入信号长度#define M 5 // 滤波器阶数// IIR数字滤波器系数float b[M+1] = {0.1, 0.2, 0.3, 0.2, 0.1};float a[M+1] = {1.0, -0.5, 0.3, -0.2, 0.1};// IIR数字滤波器函数float IIR_filter(float *x, float *y, int n) {int i, j;float sum;for (i = 0; i < n; i++) {sum = 0;for (j = 0; j <= M; j++) { if (i - j >= 0) {sum += b[j] * x[i - j]; }}for (j = 1; j <= M; j++) { if (i - j >= 0) {sum -= a[j] * y[i - j]; }}y[i] = sum;}}int main() {float x[N]; // 输入信号float y[N]; // 输出信号int i;// 生成输入信号for (i = 0; i < N; i++) {x[i] = i;}// IIR数字滤波器滤波IIR_filter(x, y, N);// 输出滤波后的信号for (i = 0; i < N; i++) {printf("%f ", y[i]);}return 0;}```以上是一个简单的IIR数字滤波器的C语言程序实现示例。
实验三FIR滤波器设计与实现
电子科技大学电子工程学院标准实验报告(实验)课程名称DSP技术电子科技大学教务处制表电子科技大学实验报告学生姓名:学号:指导教师:实验地点:实验时间:一、实验室名称:DSP技术实验室二、实验项目名称:FIR滤波器设计与实现三、实验学时:4四、实验目的:1.熟悉BF609开发板WL-BF609-EDU硬件平台。
2.熟悉CCES开发软件平台的使用,掌握CCES集成开发环境的基本操作和常用功能,掌握CCES工程的创建、程序编写、编译和调试。
3.掌握DSP中FIR滤波器设计、实现的方法。
五、实验内容:1.了解BF609开发板WL-BF609-EDU。
2.熟悉CCES集成开发环境的基本操作和常用功能。
3.学习实验指导书中的低通滤波器设计与实现,验证滤波效果。
4.独立设计、实现FIR高通滤波器,并验证滤波效果。
六、实验环境:1.预装开发环境Cross Core Embedded Studio 1.0.2的计算机。
2.BF609开发板一套。
3. ADDS HPUSB-ICE 仿真器一套。
七、 实验步骤:输入条件:1MHz 的点频信号,峰值为1;10M 的点频信号,峰值为0.5; 采样时钟40MHz 。
滤波器:17阶低通滤波器。
输出:保留10MHz 的点频信号,滤除1M 的点频信号。
1.用MATLAB 设计FIR 高通滤波器FIR 滤波器原理有M 个权系数(抽头)的FIR 滤波器,如下图所示。
滤波器的输入为随机过程()x n ,输出为10()()M i i y n w x n i -*==-∑其中,i w 表示横向滤波器的权系数。
......图M 抽头的FIR 滤波器定义输入信号向量和权向量分别为 ()[(),(1),(1)]T n x n x n x n M =--+x011[,,,]T M w w w -=w则输出可表示为()()()H T y n n n *==w x x w2.FIR滤波器高通滤波器实现(学习实验指导书中的低通滤波实验,独立完成高通滤波的DSP实现)生成Rb1.dat中数据,即滤波器权系数的m代码:close all;clear all;clc;f1=1e6;T1=1/f1;f2=10e6;T2=1/f2;T=1/40e6;t=0:T:1.6e-6-T;s1=cos(2*pi*f1*t);s2=0.5*cos(2*pi*f2*t);Rs1=round(s1*64);Rs2=round(s2*64);fid = fopen('Rs1.dat','w');fprintf(fid,'%g\t,',Rs1);fclose(fid)fid = fopen('Rs2.dat','w');fprintf(fid,'%g\t,',Rs2);fclose(fid)n=16;wn=0.35;b=fir1(n,wn,'high');freqz(b,1);Rb=round(b*1024);fid = fopen('Rb1.dat','w');fprintf(fid,'%g\t,',Rb);fclose(fid)结果:Rb1.dat中的数据为-2 ,-5 ,-4 ,17 ,42 ,12 ,-114 ,-280 ,666 ,-280 ,-114 ,12 ,42 ,17 ,-4 ,-5, -2 ,八、FIR高通滤波器代码输入条件:1MHz的点频信号,峰值为1;10M的点频信号,峰值为0.5;采样时钟40MHz。
IIR数字滤波器的设计流程图
目录目录 0前言 (1)1.1数字滤波器简介 (1)1。
2使用数字滤波器的原因 (1)1。
3设计的原理和内容 (1)工程概况 (2)正文 (2)3。
1 设计的目的和意义 (2)3.2 目标和总体方案 (2)3。
3 设计方法和内容 (3)3.4 硬件环境 (3)3。
5软件环境 (3)3。
6IIR数字滤波器设计思路 (3)3。
7 IIR数字滤波器的设计流程图 (3)3.8 IIR数字滤波器设计思路 (4)3。
9设计IIR数字滤波器的两种方法 (4)3.10双线性变换法的基本原理 (5)3。
11用双线性变换法设计IIR数字滤波器的步骤 (6)3。
12程序源代码和运行结果 (6)3.12。
1低通滤波器 (6)3.12.3带通滤波器 (10)3。
12.4带阻滤波器 (13)3。
13结论 (15)3.13。
1存在的问题 (15)3.13.2解决方案 (16)致谢 (16)参考文献 (16)前言1.1数字滤波器简介数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。
可以设计系统的频率响应,让它满足一定的要求,从而对通过该系统的信号的某些特定的频率成分进行过滤,这就是滤波器的基本原理。
如果系统是一个连续系统,则滤波器称为模拟滤波器.如果系统是一个离散系统,则滤波器称为数字滤波器。
信号通过线性系统后,其输出信号就是输入信号和系统冲激响应的卷积。
从频域分析来看,信号通过线性系统后,输出信号的频谱将是输入信号的频谱与系统传递函数的乘积。
除非为常数,否则输出信号的频谱将不同于输入信号的频谱,某些频率成分较大的模,因此,中这些频率成分将得到加强,而另外一些频率成分的模很小甚至为零,中这部分频率分量将被削弱或消失。
因此,系统的作用相当于对输入信号的频谱进行加权。
1.2使用数字滤波器的原因数字滤波器具有比模拟滤波器更高的精度,甚至能够实现后者在理论上也无法达到的性能。
数字滤波器相比模拟滤波器有更高的信噪比。
- 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(ω)');%绘图。