您好,欢迎访问三七文档
数字信号处理课程设计报告课设题目:数字听诊器学院:专业:班级:姓名:学号:指导教师:哈尔滨工业大学(威海)年月日目录一.课程设计任务.......................................................................................................11.1课程设计的目的.........................................................................................11.2课程设计的要求.........................................................................................1二.课程设计原理及设计方案...................................................................................32.1FFT模块的C语言实现....................................................................................32.1.1对于输入数据序列进行倒位序变换.........................................................32.1.2蝶形运算的循环结构.................................................................................42.1.3具体实现代码.............................................................................................42.2滤波器模块的C语言实现..............................................................................62.2.1滤波器模块流程说明.................................................................................62.2.2具体实现代码.............................................................................................6三.课程设计的步骤和结果.....................................................................................103.1软件界面介绍.................................................................................................103.1.1病人信息录入部分..................................................................................103.1.2音频分析部分..........................................................................................103.1.3菜单部分..................................................................................................103.2软件运行界面.................................................................................................113.3软件滤波效果分析.........................................................................................12四.课程设计总结.....................................................................................................15五.设计体会.............................................................................................................16六.参考文献.............................................................................................................17哈尔滨工业大学(威海)课程设计报告-1-一.课程设计任务1.1课程设计的目的数字信号处理是一门理论和技术发展十分迅速、应用非常广泛的前沿性学科,在雷达、通信、医学、地震等众多领域都有广泛的应用。《数字信号处理》课程是电子、通信、信号处理等专业的专业基础课程,数字信号处理课程设计是完成数字信号处理相关理论的学习后进行的综合性训练课程,使学生能够对信号的采集、处理、传输、显示和存储等理论及技术实现有一个系统的掌握和理解。本课程设计的目的为:1、巩固和加深学生对数字信号处理的基本概念、基本原理、基本分析方法的理解;2、培养学生根据设计题目的要求,综合利用数字信号处理技术的能力,提高学生综合运用所学知识,解决实际工程技术问题的能力;3、通过课程设计,培养学生查阅文献、资料,独立解决实际问题的能力。通过课程设计,要求学生综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应结论,再利用MATLAB或LabView作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念,使学生基本掌握以下内容:1、学会MATLAB或LabView的使用,掌握其程序设计方法。2、掌握在Windows环境下语音信号采集的方法。3、掌握数字信号处理的基本概念、基本理论和基本方法。4、掌握设计FIR和IIR数字滤波器的方法。5、学会用MATLAB或LabView对信号进行分析和处理。1.2课程设计的要求目前大夫主要以听诊器倾听病人的气管、肺部区域的声音,对病人的疾病进行判断;请设计一个听诊的软件,要求如下:1、可记录病人的姓名、年龄、性别、病史、不同疾病部位等状况;2、对病人的气管、肺部等区域的声音进行采集、分析、存储(前端听诊部分不用考虑,只考虑数据采集部分);3、可分析不同声音分量的大小,给出频谱图,以及主要频率的幅度,便于大夫分析和验证;哈尔滨工业大学(威海)课程设计报告-2-4、由于采集到的信号经常存在某些干扰信号,比如心脏的震动,请设计低通、带通、带阻滤波器对信号处理,方便医生进行使用;哈尔滨工业大学(威海)课程设计报告-3-二.课程设计原理及设计方案本次课程设计总体方案图如图1所示,整个设计基于VC开发,每一部分用C语言代码实现,下面简要介绍一下整个方案工作流程。图1数字听诊器总体方案图首先,从音频.wav文件中提取声音数据。有了声音数据,可以将原始声音波形显示出来。假如想查看原始声音信号频谱,则对声音数据进行FFT变换,将变换的结果显示出来。为了方便医生对声音文件进行优化,去噪,此部分的核心部分为滤波器设计。将原始声音数据通过滤波器模块后,同样,可进行直接波形显示,查看滤波后的波形幅度,或者进行FFT变换,查看滤波处理后信号的频率分布。接下来,具体讲一下和数字信号处理相关的模块的设计。2.1FFT模块的C语言实现经过该课程的学习,我们知道FFT算法的具体实现分为以下两部分,下面进行介绍。2.1.1对于输入数据序列进行倒位序变换该变换的目的是使输出能够得到X(0)~X(N-1)的顺序序列,以8点DFT为例,可使顺序输入序列x(0)~x(7)变为x(0),x(4),x(2),x(6),x(1),x(5),x(3),x(7)序列。其实现方法是:假设顺序输入序列一次存在A(0)~A(N-1)的数组元素中,首先我们将数组下标进行二进制化(例:对于点数为8的序列,只以需要2log83位二进制序列表示,序号6就表示为110)。二进制化以后就是将二哈尔滨工业大学(威海)课程设计报告-4-进制序列进行倒位,倒位的过程就是将原序列从右到左书写一次构成新的序列,例如序号为6的二进制表示为110,倒位后变为了011,即使十进制的3。第三步就是将倒位前和倒位后的序号对应的数据互换。依然以序号6为例,其互换过程如下:temp6;63;36;AAAAA实际上考虑到执行效率,如果对于每一次输入的数据都需要这个处理过程是非常浪费时间的。我们可以采用指向指针的指针来实现该过程,或者是采用指针数组来实现该过程。2.1.2蝶形运算的循环结构对于点数为2LN的fft运算,可以分解为L阶蝶形图级联,每一阶蝶形图内又分为M个蝶形组,每个蝶形组内包含K个蝶形。根据这一点我们就可以构造三阶循环来实现蝶形运算。编程过程需要注意旋转因子与蝶形阶数和蝶形分组内的蝶形个数存在关联。2.1.3具体实现代码voidFFT(Complex*A,intN,boolifft)//当给ifft赋真值的话进行反变换{ComplexT;intm=(int)(log(N)/log(2)),k,P,B,j=N/2,L,i;//m是级数,为2为底N的对数for(i=1;i=N-2;i++)//倒序实现,因为经过m次偶奇抽选之后,先前顺序被打乱了,但是打乱后的顺序是有规律的{if(ij){T=A[i];A[i]=A[j];A[j]=T;}k=N/2;while(j=k){哈尔滨工业大学(威海)课程设计报告-5-j-=k;k=k/2;}j+=k;}for(L=1;L=m;L++)//FFT实现(核心算法时域抽取法){B=1(L-1);//这是2的L-1次方for(j=0;j=B-1;j++){P=(1(m-L))*j;if(ifft==false)//默认算法为傅里叶正变换{for(k=j;k=N-1;k+=1L){T=A[k]+A[k+B]*Complex(cos(-2*PI*P/N),sin(-2*PI*P/N));A[k+B]=A[k]-A[k+B]*Complex(cos(-2*PI*P/N),sin(-2*PI*P/N));A[k]=T;}}else//ifft为真的话进行傅里叶反变换{for(k=j;k=N-1;k+=1L){T=A[k]+A[k+B]*Complex(cos(-2*PI*P/N),sin(2*PI*P/N));//反变换得取共轭A[k+B]=A[k]-A[k+B]*Complex(cos(-2*PI*P/N),sin(2*PI*P/N));A[k]=T;}}哈尔滨工业大学(威海)课程设计报告-6-}}if(ifft==true)//反变换还得除以N{for(k=0;kN;k++)A[k]=A[k]/N;}}2.2滤波器模块的C语言实现2.2.1滤波器模块流程说明(n)dh(n)(n)h(n)y(n)x图2滤波器流程图本设计的滤波器可实现低通、带通、带阻功能,具体流程如图2所示。首先确定滤波器阶数N,选择滤波器类型,这样就可以得到(n)dh,再选择窗函数得到(n)n,相乘后可得到用窗截断的(n)h。之后的步骤就是将得到的(n)h和(n)x进行卷积,得到最后的
本文标题:数字听诊器
链接地址:https://www.777doc.com/doc-7110738 .html