资源预览内容
第1页 / 共23页
第2页 / 共23页
第3页 / 共23页
第4页 / 共23页
第5页 / 共23页
第6页 / 共23页
第7页 / 共23页
第8页 / 共23页
第9页 / 共23页
第10页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
中山大学南方学院 电气与计算机工程学院 数字信号处理与实践 实验讲义2018年 8月 1日前 言数字数字信号处理课程是电子信息工程、通信工程等学科专业本科生的技术基础课程。本课程介绍了数字信号处理的基本概念、基本分析方法和处理技术。主要讨论离散时间信号和系统的基础理论、离散傅立叶变换DFT理论及其快速算法FFT、IIR和FIR数字滤波器的设计以及有限字长效应。数字信号处理又是一门理论和工程实践密切结合的课程。为了加深对教学内容的理解,应在学习理论的同时,加强上机实验,深入理解和消化基本理论,锻炼初学者独立解决问题的能力。本课程实验要求学生运用MATLAB编程完成一些数字信号处理的基本功能。 教师(签名): 年 月 日1数字信号处理与实践3实验讲义目 录实验一 .3实验二 .8实验三 .15实验四 .22实验五 .32实验六 .39实验四 DFS、DFT与FFT一、实验目的(1) 加深对周期序列DFS、有限长序列DFT和FFT的基本概念及理论的理解。(2)MATLAB语言求解DFS、DFT、FFT的以及相应反变换的方法。二、实验原理1、周期序列的离散傅里叶级数(DFS)(1)DFS的基本概念:离散时间序列x(n)满足x(n)= x(n+rN),称为离散周期序列,用表示。其中,N为信号的周期,x(n)称为离散周期序列的主值。周期序列可以用离散傅里叶级数(DFS)表示:其中,是周期序列DFS第k次谐波分量的系数,也称为周期序列的频谱,可表示为以上两式也是周期序列的一对傅里叶级数变换对。令,以上DFS变换对又可以写成:与连续周期信号的傅里叶级数相比,周期序列的离散傅里叶级数有以下特点: 连续周期信号的傅里叶级数由无穷多个与基波频率成整数倍的谐波分量叠加而成,而周期为N的周期序列的傅里叶级数仅有N个独立的谐波分量。 周期序列的频谱也是一个以N为周期的周期序列。(2)周期序列的DFS和IDFS例4-1 已知一个周期性矩形序列的脉冲宽度占整个周期的1/4,一个周期的采样点数为16点,编程显示3个周期的序列波形,并: 用傅里叶级数求信号的幅度谱和相位谱。 求傅里叶级数逆变换的图形,并与原序列进行比较。程序清单如下:N=16;xn=ones(1,N/4),zeros(1,3*N/4);xn=xn,xn,xn;n=0:3*N-1;k=0:3*N-1;Xk=xn*exp(-j*2*pi/N).(n*k);x=(Xk*exp(j*2*pi/N).(n*k)/N;subplot(2,2,1);stem(n,xn);title(x(n);axis(-1,3*N,1.1*min(xn),1.1*max(xn);subplot(2,2,2);stem(n,abs(x);title(IDFS|X(k)|);axis(-1,3*N,1.1*min(x),1.1*max(x);subplot(2,2,3),stem(k,abs(Xk);title(|X(k)|);axis(-1,3*N,1.1*min(abs(Xk),1.1*max(abs(Xk);subplot(2,2,4),stem(k,angle(Xk);title(arg|X(k)|);axis(-1,3*N,1.1*min(angle(Xk),1.1*max(angle(Xk);程序运行结果如图4-1所示:图4-1 幅度谱与相位谱由离散傅里叶级数逆变换图形可见,与原序列相比,幅度扩大了32倍。这是因为周期序列为原主值序列周期的3倍,做逆变换时未做处理。可将逆变换程序改为:x=(Xk*exp(j*2*pi/N).(n*k)/3*3*N;由上例可见,周期序列的DFS和IDFS是依据变换公式编程的,无论信号序列如何变化,求解的公式总是一样的。因此,可将其编写成通用子程序: 离散傅里叶级数变换通用子程序dfs.mfunctionXk=dfs(xn,N)n=0:N-1;k=0:N-1;WN=exp(-j*2*pi/N);nk=n*k;Xk=xn*WN.nk;离散傅里叶级数逆变换通用子程序idfs.mfunctionxn=idfs(Xk,N)n=0:N-1;k=0:N-1;WN=exp(j*2*pi/N);nk=n*k;xn=(Xk*WN.nk)/N;例4-2 利用上述两个子程序,重做例4-1程序清单如下:N=16;xn=ones(1,N/4),zeros(1,3*N/4);Xk=dfs(xn,N);x=idfs(Xk,N);subplot(2,2,1);stem(n,xn);title(x(n);axis(-1,3*N,1.1*min(xn),1.1*max(xn);subplot(2,2,2);stem(n,abs(x);title(IDFS|X(k)|);axis(-1,3*N,1.1*min(x),1.1*max(x);subplot(2,2,3),stem(k,abs(Xk);title(|X(k)|);axis(-1,3*N,1.1*min(abs(Xk),1.1*max(abs(Xk);subplot(2,2,4),stem(k,angle(Xk);title(arg|X(k)|);axis(-1,3*N,1.1*min(angle(Xk),1.1*max(angle(Xk);程序运行结果如图4-2所示。由于子程序仅适用于对主值区间进行变换,周期次数无法传递给子程序,因此程序执行结果仅显示一个周期的变换情况。图4-2 幅度谱与相位谱2、离散傅里叶变换(DFT)(1)DFT与IDFT在实际中常常使用有限长序列。如果有限长序列为x(n),则该序列的离散傅里叶变换对可表示为从离散傅里叶变换定义式可以看出,有限长序列在时域上是离散的,在频域上也是离散的,式中,即仅在单位圆上N个等间距的点上取值,这为使用计算机进行处理带来了方便。由有限长序列的傅里叶变换和逆变换定义可知,DFT和DFS的变换公式非常相似,因此,在程序编写上也基本一致。例4-3 已知x(n)=0,1,2,3,4,5,6,7,求其DFT和IDFT。要求: 画出序列傅里叶变换对应的|X(k)|和argX(k)图形。 画出x(n)图形,并与IDFTX(k)图形进行比较。程序清单如下:xn=0,1,2,3,4,5,6,7;N=length(xn);n=0:N-1;k=0:N-1;Xk=xn*exp(-j*2*pi/N).(n*k);x=(Xk*exp(j*2*pi/N).(n*k)/N;subplot(2,2,1);stem(n,xn);title(x(n);axis(-1,N,1.1*min(xn),1.1*max(xn);subplot(2,2,2);stem(n,abs(x);title(IDFT|X(k)|);axis(-1,N,1.1*min(x),1.1*max(x);subplot(2,2,3),stem(k,abs(Xk);title(|X(k)|);axis(-1,N,1.1*min(abs(Xk),1.1*max(abs(Xk);subplot(2,2,4),stem(k,angle(Xk);title(arg|X(k)|);axis(-1,N,1.1*min(angle(Xk),1.1*max(angle(Xk);程序运行结果如图4-3所示。由图可见,与周期序列不同,有限长序列本身是仅有N点的离散序列,相当于周期序列的主值部分。因此,其频谱也对应序列的主值部分,是长度为N的离散序列。图4-3 DFT和IDFT(2)DFT与DFS的联系将周期序列的傅里叶级数变换对和有限长序列的离散傅里叶变换对进行比较可见,两者的区别仅仅是将周期序列换成了有限长序列x(n),同时,由于式中的周期性,因而有限长序列的离散傅里叶变换实际上隐含着周期性。(3)DFT与DTFT的联系 若离散时间非周期序列为x(n),则它的离散傅里叶变换(DTFT)对定义为其中称为序列的频谱。可表示为,称为序列的幅度谱,称为序列的相位谱。由DTFT的定义可见,序列在时域是离散的、非周期的,在频域是连续的、周期的。与有限长序列相比,仅在单位圆上取值,X(k)是在单位圆上N个等间距的点上取值。因此,连续谱可由离散谱X(k)经插值后得到。3、FFT(1)MATLAB提供的FFT函数 由理论学习可知,DFT是唯一在时域和频域均离散的变换方法,它适用于有限长序列。尽管这种变换方法是可以用于数值计算的,但如果只是简单地按照定义进行数据处理,当序列长度很大时,将占用很大的内存空间,且运算时间很长。 快速傅里叶变换是用于DFT运算的高效快速算法的统称,FFT只是其中的一种。FFT主要有时域抽取算法和频域抽取算法,基本思想是将一个长度为N的序列分解成多个段序列,如基2算法、基4算法等,大大地缩短了DFT的时间。有关详细理论可参考教材。MATLAB提供了进行FFT的函数fft和ifft分别用于计算DFT和IDFT。(2)用FFT进行频谱分析 对有限长序列进行谱分析一个序号从n1到n2的时域有限长序列x(n),它的频谱定义为它的离散傅里叶变换,且在Nyquist频率范围内有界并连续。序列的长度为N,则N=n2-n1+1。计算x(n)的DFT得到的是的N个样本点。其中数字频率为式中:为数字频率的分辨率;k取对应-(N-1)/2到(N-1)/2区间的整数。在实际使用中,往往要求计算出信号以模拟频率为横坐标的频谱,此时对应的模拟频率为式中:D为模拟频率的分辨率或频率间隔;Ts为采样信号的周期,Ts=1/Fs;定义信号的长度L=NTs。(时间分辨率越大,频率分辨率越小)ttD2D12D12D2时间分辨率越低,频率分辨率越大。2N12N2变换到数字频率也是一样的。(一个周期内的N不同)思考:如果是同样的时长D,增大采样率,则频率分辨率怎么变化?在使用FFT进行DFT的高校运算时,一般不直接用n从n1到n2的x(n),而是取的主值区间(n=0,1,N-1)的数据,经FFT将产生N个数据,定位在k=0,1,N-1的数字频率点上,即对应0,2。如果要显示-,范围的频谱,则可以使用fftshift(X)进行位移。函数:1. floor(n):向下取整数如:floor(-5/2:5/2)= -3 -2 -1 0 1 2.2. fft(X,N):对X序列做N点FFT。求出的频率范围是从0到2-2Nfftshift(X):将零频搬移到频谱中心。原
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号