河北科技大学课程设计报告学生姓名:张燚学号:090701232专业班级:电子信息工程092班课程名称:数字信号处理及应用学年学期:2011—2012学年第一学期指导教师:王晓君2011年12月2课程设计成绩评定表学生姓名张燚学号090701232成绩专业班级电信092起止时间2011.12.19至2011.12.23设计题目设计一:DFT在信号频谱中的应用设计设计六:双音多频音编解码系统指导教师评语指导教师:年月日3目录一、设计题目...................................................................................................4二、设计目的...................................................................................................41、DFT在信号频谱中的应用设计目的:..............................................42、双音多频拨号音频解码系统设计目的...............................................4三、设计原理...................................................................................................41、DFT在信号频谱中的应用设计原理..................................................42、双音多频拨号音编解码系统设计原理...............................................4四、实现方法...................................................................................................51.DFT在信号频谱中的应用......................................................................52.双音多频拨号音频解码系统...................................................................5五、设计内容及要求.......................................................................................61、DFT在信号频谱分析中的应用..........................................................62、双音多频拨号音编解码系统...............................................................8六、设计结果及改进建议.............................................................................211.DFT在信号频谱分析中的应用............................................................212.双音多频拨号音编解码系统.................................................................24七、回答思考题.............................................................................................241.DFT在信号频谱分析中的作用............................................................242.双音多频拨号音编解码系统.................................................................25八、设计体会.................................................................................................25九、参考文献.................................................................................................264一、设计题目我共选择了两个题目:DFT在信号频谱中的应用和双音多频拨号音频解码系统。二、设计目的1、DFT在信号频谱中的应用设计目的:1.1熟悉DFT的性质。1.2加深理解信号频谱的概念及性质。2、双音多频拨号音频解码系统设计目的本设计是一个综合设计,目的在于了解IIR系统、谱分析方法以及滤波器的设计和具体应用。三、设计原理1、DFT在信号频谱中的应用设计原理1.1学习用DFT和补零DFT的方法来计算信号的频谱。1.2用MATLAB语言编程来实现,在做课程设计前,必须充分预习课本DTFT、DFT及补零DFT的有关概念,熟悉MATLAB语言,独立编写程序。2、双音多频拨号音编解码系统设计原理一个双音多频电话机(DTMF,dual-tonemulti-frequencytouch-tonephone)可以对12个按键编码,每个码都是两个单频正弦之和。这两个单频正弦信号分别来自两个频率组,即列频率组(或称低频率群)与行频率组(或称高频率群),5它们与每个按键的对应关系如下表所示:1209Hz1336Hz1447Hz697Hz123770Hz456852Hz789941Hz*0#数字DTMF接收机通过接收到的双音信号的频谱,再现每个按键所对应的两个频率,从而确认被发送的电话号码。四、实现方法1.DFT在信号频谱中的应用因直接计算DFT变换的运算量很大,因此常用快速傅里叶算法FFT代替DFT变换。此题目用到了Matlab中的FFT函数。2.双音多频拨号音频解码系统2.1双音多频信号的产生假设时间连续的DTMF信号按表选择的两个频率,代表低频带中的一个频率,代表高频带中的一个频率。显然采用数字方法产生DTMF信号,方便而且体积小。形成上面序列的方法有两种,即计算法和查表法。用计算法求正弦波的序列值很容易,但实际中要占用一些计算时间,影响运行速度。查表法是预先将正弦波的各序列值计算出来,寄存在存储器中,运行时只要按照顺序和一定的速度取出便可。这种方法要占用一定的存储空间,但是速度快。2.2双音多频信号的检测在接收端,要对收到的双音多频信号进行检测,检测两个正弦波的频率是多少,以判断所对应的十进制数字或者符号。显然这里仍然要用数字方法进行检测,因此要将收到的时间连续DTMF信号经过A/D变换,变成数字信号进行检测。检测的方法有两种,一种是用一组滤波器提取所关心的频率,根据有输出信号的62个滤波器判断相应的数字或符号。另一种是用DFT(FFT)对双音多频信号进行频谱分析,由信号的幅度谱,判断信号的两个频率,最后确定相应的数字或符号。当检测的音频数目较少时,用滤波器组实现更合适。此题目主要用到了Matlab中的FIR滤波器(fir2函数)、FFT函数。五、设计内容及要求1、DFT在信号频谱分析中的应用1.1用MATLAB语言编写计算序列x(n)的N点DFT的m函数文件DFTmatlab.m。并与MATLAB中的内部函数文件fft.m作比较。DFTmatlab.m源程序如下:function[q]=DFTmatlab(xn,N)n=[0:1:N-1];%n取0到N-1k=[0:1:N-1];WN=exp(-j*2*pi/N);%求WNnk=n'*k;WNnk=WN.^nk;q=xn*WNnk%求出xn的DFT表达式DFT与FFT计算时间比较的源程序:dft_time=zeros(1,100);forn=1:100;t=clock;%clock%将当前时间作为日期向量返回a=sin(n)+cos(n);DFTmatlab(a,n);dft_time(n)=etime(clock,t);%etime指消耗的时间end;n=1:100;subplot(1,2,1);plot(n,dft_time,'.');%plot二维曲线图xlabel('N');ylabel('time/s');title('DFT');fft_time=zeros(1,100);forn=1:1:100;t=clock;a1=sin(n)+cos(n);fft(a1);fft_time(n)=etime(clock,t);7end;n=1:100;subplot(1,2,2);plot(n,fft_time,'.');xlabel('N');ylabel('time/s');title('FFT');1.2.对离散确定信号()cos(0.48)cos(0.52)xnnn作如下谱分析:(1)截取使成为有限长序列N(),(长度N自己选)写程序计算出的N点DFT,并画出相应的幅频图。源程序如下:n=0:99;xn=cos(0.48*pi*n)+cos(0.52*pi*n);Xk=fft(xn,100);subplot(2,1,1);stem(n,xn);grid;subplot(2,1,2);stem(n,abs(Xk));grid;(2)截取使其成为N点序列,补零加长至M点(长度M自己选),编写程序计算的M点DFT,并画出相应的图。源程序如下:n=0:19;xn=cos(0.48*pi*n)+cos(0.52*pi*n);n1=0:24;xn1=[xn,zeros(1,5)];n2=0:59;xn2=[xn,zeros(1,40)];Xk1=fft(xn1,25);Xk2=fft(xn2,60);subplot(3,1,1);stem(n,xn);grid;subplot(3,1,2);stem(n1,abs(Xk1));grid;subplot(3,1,3);stem(n2,abs(Xk2));grid;(3)利用补零DFT计算N点有限长序列频谱并画出相应的幅频图。源程序如下:n=0:9;xn=cos(0.48*pi*n)+cos(0.52*pi*n);n1=0:99;xn3=[xn,zeros(1,90)];Xk3=DFTmatlab(xn3,100);plot(n1,abs(Xk3));grid;1.3研究高密度谱与高分辨率频谱。对连续确定信号333()cos(26.510)cos(2710)cos(2910)axtttt以采样频率fs=32kHz对信号采样得离散信号,分析下列三种情况的幅频特性。(1)采集数据长度取N=16点,编写程序计算出的16点DFT,并画出相应的幅频图。8源程序如下:T=1/(32*10^3);t=(0:15);xn=cos(2*pi*6.5*10^3*t*T)+cos(2*pi*7*10^3*t*T)+cos(2*pi*9*10^3*t*T);Xk=fft(xn,16);subplot(2,1,1);stem(t,xn);grid;subplot(2,1,2);stem(t,abs(Xk));grid;(2)采集数据长度N=16点,补零加长至M点(长度M自己选),利用补零DFT计算的频谱并画出相应的幅频图。源程序如下:T=1/(32*10^3);t=(0:15);xn=cos(2*pi*6.5*10^3*t*T)+cos(2*pi*7*10^3*t*T)+cos(2*pi*9*10^3*t*T);n1=