您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 数字信号处理三级项目
燕山大学信息科学与工程学院页-1-燕山大学多频窄带数字信号处理仿真系统设计学生所在学院:信息学院学生所在班级:电子信息工程2班课程名称:数字信号处理学生姓名:姜升殿、李林、刘鹏、左园叶、陈敏、黄品程指导教师:陈书贞日期:2014.12.202014年12月燕山大学信息科学与工程学院页-2-多频窄带数字信号处理仿真系统设计姜升殿、李林、黄品程、刘鹏、左园叶、陈敏摘要本文主要是实现在TC2.0的环境下利用C语言实现多频窄带数字信号处理仿真系统。系统功能包括信号采集、信号时域及频域分析、FIR滤波器设计、数字信号滤波,在本文中主要设计四种滤波系统:低通滤波系统、高通滤波系统、带通滤波系统、带阻滤波系统。在FIR滤波器设计时使用的是窗函数设计的方法,涉及四种窗函数,分别是矩形窗、哈明窗、汉宁窗、布莱克曼窗。最后本文对设计的系统程序进一步改进,使之可以完成信号模拟到数字的转换功能、根据数字滤波器指标自动完成滤波器设计的功能、四种滤波功能以及个步骤的时域频域图形绘制。关键词:多频窄带数字信号处理仿真系统、FIR滤波器、C语言、TC2.0前言:本次数字信号三级项目是教改后用于帮助同学理解数字信号的理论和提高处理解决问题的能力而设立的,主要是利用数字信号的理论结合编程实现一个多频窄带数字信号处理仿真系统设计。目前的软件解决数字信号处理的有很多,比较好的是MATLAB,其强大的数字图像处理能力为我们提供了很好的处理环境,但是由于其处理都是集成的,同时给我们的使用带来一定的不便性,对于我们理解信号处理过程和定制我们需要的信号处理软件没有参考价值。故我们选择利用tc2.0环境下的C语言进行系统设计与编写,预期实现信号的采集、信号时域及频域分析、FIR滤波器设计、数字信号滤波等功能的多频窄带数字信号处理软件仿真系统。项目组分工:组长姜升殿,负责程序的编写和调试以及报告和汇报ppt的部分制作;组员李林,负责报告主要编写;组员陈敏,负责汇报ppt的主要制作;组员黄品程,负责部分程序的编写;组员左园叶,负责报告的理论部分整理;组员刘鹏,负责报告的理论部分整理。燕山大学信息科学与工程学院页-3-研究报告正文1系统整体设计思想本报告主要是用C语言在tc2.0环境下实现信号采集、信号时域及频域分析、FIR滤波器设计、数字信号滤波等功能的多频窄带数字信号处理软件仿真系统。由此可知,该报告设计需包括以下系统:A模拟信号采集模块:完成对模拟信号的采样、量化,使信号变成数字信号。B显示模块:完成对信号的时域和频域显示,以便于对信号的频谱和时域分布进行分析。C滤波器模块:根据模拟信号生成的数字信号的频域特点确定要完成的滤波指标,进而按照一定的原则选择合适的滤波器进行最后要完成的滤波过程。D滤波模块:系统的最后一步,完成对要求滤除的信号频率的滤除和有用频率分量的保留。具体的系统整体设计流程见图1-1系统设计框图:采集模块滤波器模块显示模块滤波模块模拟信号生成数字滤波器指标图1-1系统设计框图2各模块设计2.1模拟信号采集模块本项目的研究的原始信号是模拟信号,而计算机只能处理二进制编码形式的数字信号,故模拟信号与数字信号之间需有一个误差比较小或者无误差的转换过程,而这个过程就是通过我们的模拟信号采集模块实现的。由理论知识可知,这个转变过程至少需要满足两个条件,一是数字信号可以无失真的还原原模拟信号,二是数字信号的频域相对于模拟信号的频域发生的改变。无失真的还原原模拟信号就要满足采样频率fs大于等于模拟信号的最高频率的二倍。以y=cos(2***)pifot为例,采样后的数字信号为y=cos(2*pi*fo*n*fs),其中fs2fo。故编程实现即为:voidSignal_low_high(intn)/*高通和低通信号滤波测试信号函数*/燕山大学信息科学与工程学院页-4-{inti;for(i=0;in;i++){ARRAYI[i]=0.0;ARRAYR[i]=(float)cos(2*PI*i*f1/fs)+(float)cos(2*PI*i*f2/fs);}}程序中ARRAYR,ARRAYI数组表示采集数字信号的实部和虚部。2.2显示模块为了实现信号的采样滤波过程的图形显示,本次项目选择用TC2.0编译环境实现对信号的时域和频域显示。考虑到信号包含实部和虚部,因此程序编写时为了方便,选择将一个信号用实部和虚部表示。因此显示的时候就出现了两种情况,时域显示和频域显示,信号不同域波形需要不同的求模函数实现对信号的强度的表示,具体程序函数声明为:/*取模函数,主要用来对时域信号的取模*/voidGetModu1(floata[],floatb[],intll)/*取模函数,主要用来对频域信号的取模*/voidGetModu2(floata[],floatb[],intNNN)在具体的DOS环境下的图形显示,考虑系统功能实现问题,设计两个绘图函数,GRAPH用于专门显示窗函数的衰减曲线,GRAPH1通用绘图函数为显示步骤中函数的时域和频域,具体见程序:/*画图程序,用以画窗函数的时域图*/voidGRAPH(floatxw[MAX],intnn,intkk)/*xw表示窗函数,nn表示描点点数,kk表示滤波器类型*//*画图程序,用以画函数的时域和频域的图型*/voidGRAPH1(floata[],intn,intii,inthigh)/*n表示描点点数,ii表示步长,high表示所控制的画图函数的高度*/2.3滤波器模块本项目选择使用FIR滤波器设计方法。FIR滤波器通常采用窗函数方法来设计。窗设计的基本思想是,首先选择一个适当的理想选频滤波器(它总是具有一个非因果,无限持续时间脉冲响应),然后截取(加窗)它的脉冲响应得到线性相位和因果FIR滤波器。因此这种方法的重点是选择一个合适的窗函数和理想滤波器。我们用()jdHe表示理想的选频滤波器,它在通带上具有单位增益和线性相位,在阻带上具有零响应。一个带宽c的低通滤波器由下式给定:1,||()0,||jjcdceHe燕山大学信息科学与工程学院页-5-为了从()dhn得到一个FIR滤波器,必须同时在两边截取()dhn。而要得到一个因果的线性相位滤波器,它的()hn长度为N,必须有:(),011()0,2dhnnNNhn其他这种操作叫做加窗,()hn可以看作是()dhn与窗函数()wn的乘积:()hn()()dhnwn其中01()0,nNwn关于对称,其他根据()wn的不同定义,可以得到不同的窗结构。在频域中,因果FIR滤波器响应()jHe由()jdHe和窗响应()jWe的周期卷积得到,即:()1()()()()()2jjjjjddHeHeWeWeHed常用的窗函数有矩形窗、巴特利特(BARTLETT)窗、汉宁(HANNING)窗、海明(HAMMING)窗、布莱克曼(BLACKMAN)窗、凯泽(KAISER)窗等。窗函数设计的具体步骤见流程图2-1:数字滤波指标窗函数类型窗函数长度N理想逼近频率响应函数理想单位脉冲函数Hd(n)FFT变换相乘器h(n)=Wn(n)*Hd(n)物理可实现的单位脉冲响应h(n)Wn(n)图2-1窗函数设计流程图燕山大学信息科学与工程学院页-6-输入滤波类型as阻带最小衰减低通或者高通滤波器?输入wsl,wsh,wpl,wphNY输入Ws,Wp确定窗函数的长度Nas=21?as=44?as=53?as=74?矩形窗汉宁窗哈明窗布莱克窗退出窗wn(n)YYYYNNNNHd(n)图2-2滤波器指标选择窗和理想响应流程本项目实现提供四个窗函数选择,分别是矩形窗、哈明窗、汉宁窗、布莱克曼窗,通过给定的数字滤波器指标可以求出wn(n)窗函数,wn(n)窗函数得到程序实现上见附录程序中JXC(),HNC(),HMC(),BLKMC()四个窗函数子函数。具体选择的窗函数类型需根据as阻带最小衰减,ws阻带截止频率,wp通带截止频率,wsl、wsh、wpl、wph带通带阻滤波器的上下边带阻带通带截止频率确定,由指标选择窗函数的子程序见choose_window()子程序,具体见流程图2-2。理想单位脉冲函数Hd(n)获取上,因为我们设计的滤波器为低通、高通、带通、带阻四种,故需要四个能产生理想逼近单位响应函数的子函数。查阅资料可知,对于高通滤波器函数来说,其理想频率响应()jdeH和理想单位脉冲响应函数(n)dH分别为:(1)/2()00jNjcdceeH11sinsin22()1()2cdNNnnhnNn燕山大学信息科学与工程学院页-7-对于带通滤波器函数来说,其理想频率响应()jdeH和理想单位脉冲响应函数(n)dH分别为:(1)/2()0其它jNjlhdeeH11sinsin22()1()2hldNNnnhnNn对于带阻滤波器函数来说,其理想频率响应()jdeH和理想单位脉冲响应函数(n)dH分别为:(1)/2||,||()0其它jNjlhdeeH111sinsinsin222()1()2lhdNNNnnnhnNn所以,由公式可以编写具体的函数产生程序,具体(n)dH函数的产生见附录子函数HDN(),HDN1(),HDN2(),HDN3()程序。滤波器的单位脉冲响应h(n)得到是窗函数设计滤波器的最后一步,又流程图3-1可知,h(n)=Wn(n)*Hd(n),通过一个简单的for循环即可实现最后的相乘工作,即程序:for(i=0;in;i++)/*时域加窗处理*/{Hr[i]=Hd[i]*wn[i];Hi[i]=0.0;}2.4滤波模块滤波模块是设计的多频窄带数字信号处理仿真系统的最后一个步骤。该步骤的设计流程图见图2-3。燕山大学信息科学与工程学院页-8-采集信号x(n)设计的单位脉冲响应h(n)线性卷积截断处理滤波后y(n)图2-3滤波设计流程图流程图中的截断处理是因为线性卷积过程中会在输出信号的两边形成过渡带,过渡带中包含的信号并不是我们想要的信号,而且过渡带中包含许多我们不想要的频率分量,因此为避免上述的过渡带带来的影响,我们对线性卷积的得到的结果进行截断处理,使得到的输出信号y(n)与原信号等长,这也满足我们对数字信号处理的基本要求。在程序的具体实现上,线性卷积程序为Cir_conv()子函数程序(具体见附录程序),截断函数程序为for(I=0;INN;I++)/*对滤波信号进行截断处理*/{Jieduanr[I]=DfCvAR[I+(N-1)/2];Jieduani[I]=DfCvAI[I+(N-1)/2];}在信号的分析过程中,对于时域频域之间的转换,我们的设计思路是以DFT(程序见附录Dft子函数)变换为主,以FFT(程序见附录DFT_FFT子函数)变换为辅。因FFT程序运行速度快,但变换点数必须为2的幂次,因此主要用来完成窗函数的时域到频域的转换;其他时域频域之间的不定点转换则选择DFT实现。3滤波实现3.1低通滤波(程序见附录)测试信号函数为10Hz和45Hz的混合信号,采样频率为100Hz,采样时间为2.0s,测试信号DFT变换点数为200点。实现对45Hz高频信号的滤出,信号的时域波形和频域波形见图3-1-1与图3-1-2。图3-1-1测试信号时域波形燕山大学信息科学与工程学院页-9-图3-1-2测试信号频域波形运行结果图:图3-1-3滤波器指标输入图3-1-4窗函数时域波形燕山大学信息科学与工程学院页-10-图3-1-5滤波未截断时域波形图3-1-6滤波截断后时域波形图3-1-7滤波截断后频域波形燕山大学
本文标题:数字信号处理三级项目
链接地址:https://www.777doc.com/doc-2387668 .html