您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 用DFT(FFT)对连续信号进行频谱分析
1电子信息工程系实验报告课程名称:数字信号处理实验项目名称:用DFT(FFT)对连续信号进行频谱分析实验时间:班级:通信姓名:xxp学号:一、实验目的:1.掌握用DFT(FFT)对模拟信号进行谱分析的方法,理解可能出现的分析误差及其原因,以便在实际中正确应用FFT。2.熟悉应用FFT实现两个序列的线性卷积的方法。二、实验原理:1.用DFT(FFT)对连续信号进行频谱分析用DFT(FFT)对模拟信号做谱分析是一种近似的谱分析。首先一般的模拟信号(周期信号除外)的频谱是连续谱,而用FFT做谱分析得到的是数字谱,因此应该取FFT的点数多一些,用它的包络作为模拟信号的近似谱。另外,如果模拟信号不是严格的带限信号,会因为频谱混叠现象引起谱分析的误差,这种情况下可以预先将模拟信号进行预滤,或者尽量将采样频率取高一些。最后要注意一般的模拟信号是无限长的,分析时要截断,截断的长度与对模拟信号进行频谱分析的分辨率有关。如果要进行谱分析的模拟信号是周期信号,最好选择观测时间是信号周期的整数倍,如果不知道信号的周期,要尽量选择观测时间长一些,以减少截断效应的影响。在运用DFT(FFT)对模拟信号进行谱分析的过程中主要可能产生以下三种误差:(1)混叠现象对模拟信号进行谱分析时首先要对其采样,当采样速率不满足Nyquist定理时,就会发生频谱混叠,使得采样后的信号序列频谱不能真实的反映原模拟信号的频谱。避免混叠现象的唯一方法是保证采样速率足够高,使频谱混叠现象不致出现,即在确定采样频率之前,必须对频谱的性质有所了解,在一般情况下,为了保证高于折叠频率的分量不会出现,在采样前,先用低通模拟滤波器对信号进行滤波。(2)截断效应实际中我们往往用截短的序列来近似很长的甚至是无限长的序列,这样可以使用较短的DFT来对信号进行频谱分析,这种截短等价于给原信号序列乘以一个矩形窗函数,也相当于在频域将信号的频谱和矩形窗函数的频谱卷积,所得的频谱是原序列频谱的扩展。泄漏不能与混叠完全分开,因为泄漏导致频谱的扩展,从而造成混叠。为了减少泄漏的影响,可以选择适当的窗函数使频谱的扩散减至最小。(3)栅栏效应成绩:指导教师(签名):2DFT是对单位圆上Z变换的均匀采样,所以它不可能将频谱视为一个连续函数,就一定意义上看,用DFT来观察频谱就好像通过一个栅栏来观看一个图景一样,只能在离散点上看到真实的频谱,这样就有可能发生一些频谱的峰点或谷点被“尖桩的栅栏”所拦住,不能被我们观察到。减小栅栏效应的一个方法就是借助于在原序列的末端填补一些零值,从而变动DFT的点数,这一方法实际上是人为地改变了对真实频谱采样的点数和位置,相当于搬动了每一根“尖桩栅栏”的位置,从而使得频谱的峰点或谷点暴露出来。2.用FFT计算线性卷积用FFT可以实现两个序列的圆周卷积。在一定的条件下,可以使圆周卷积等于线性卷积。一般情况,设两个序列的长度分别为N1和N2,要使圆周卷积等于线性卷积的充要条件是FFT的长度N(N≥N1+N2)对于长度不足N的两个序列,分别将他们补零延长到N。当两个序列中有一个序列比较长的时候,我们可以采用分段卷积的方法。有两种方法:重叠相加法:将长序列分成与短序列相仿的片段,分别用FFT对它们作线性卷积,再将分段卷积各段重叠的部分相加构成总的卷积输出。重叠保留法:这种方法在长序列分段时,段与段之间保留有互相重叠的部分,在构成总的卷积输出时只需将各段线性卷积部分直接连接起来,省掉了输出段的直接相加。3.MATLAB中计算DFT(FFT)的函数用函数U=fft(u,N)和u=ifft(U,N)计算N点序列的DFT正、反变换。三、实验仪器及设备计算机、MATLAB软件。四、实验内容:(1)复习用DFT(FFT)对连续信号进行频谱分析的误差问题以及用DFT(FFT)进行线性卷积的方法。(2)用MATLAB编制程序产生以下实验信号:123()()=1.5ms()sin(2/8)f()cos8cos16cos20xtRtxtftxtttt频率自己选择答:matlab编程如下:clear;clc;subplot(311);x1=@(t)Heaviside(t)-Heaviside(t-1.5*10^(-3));ezplot(x1,[0,3*10^-3]);gridon;ylabel('x1(t)');f=215;x2=@(t)sin(2*pi*f*t+pi/8);subplot(312);ezplot(x2,[0,0.01]);gridon;ylabel('x2(t)');x3=@(t)cos(8*pi*t)+cos(16*pi*t)+cos(20*pi*t);subplot(313);ezplot(x3,[0,1]);ylabel('x3(t)');gridon;300.511.522.53x10-300.51tHeaviside(t)-Heaviside(t-1.510-3)x1(t)00.0010.0020.0030.0040.0050.0060.0070.0080.0090.01-101tsin(2ft+/8)x2(t)00.10.20.30.40.50.60.70.80.91-202tcos(8t)+cos(16t)+cos(20t)x3(t)图1运行结果(3)分别对以上三种模拟信号选择采样频率和采样点数:1对1()()xtRt,选择采样频率fs=4k、8k、16kHz,采样点数用sf计算。2对2()sin(2/8)xtft,频率f自己选择,采样频率4sff,观测时间0.5,,2TTTpT采样点数用sTf计算。3对3()cos8cos16cos20xtttt,选择采样频率64sfHZ,采样点数分别为16、32、64。分别将它们转换成序列,顺序用123()()()xnxnxn、、表示,再分别将它们进行FFT(如果采样点数不满足2的整数幂,可以通过序列尾部加零满足)并画出各自的幅频特性曲线。答:matlab编程如下:clear;clc;x1=@(t)Heaviside(t)-Heaviside(t-1.5*10^(-3));f=215;x2=@(t)sin(2*pi*f*t+pi/8);x3=@(t)cos(8*pi*t)+cos(16*pi*t)+cos(20*pi*t);fs4k=4000;fs8k=8000;fs16k=16000;tp=3*10^(-3);t11=0:1/fs4k:tp;t12=0:1/fs8k:tp;t13=0:1/fs16k:tp;x1_4k=x1(t11);x1_8k=x1(t12);x1_16k=x1(t13);subplot(331);stem(t11,x1_4k,'.');subplot(332);stem(t12,x1_8k,'.');subplot(333);stem(t13,x1_16k,'.');fs=4*f;tp1=0.5/f;tp2=1/f;tp3=2/f;t21=0:1/fs:tp1;t22=0:1/fs:tp2;t23=0:1/fs:tp3;x2_tp1=x2(t21);x2_tp2=x2(t22);x2_tp3=x2(t23);subplot(334);stem(t21,x2_tp1,'.');subplot(335);stem(t22,x2_tp2,'.');subplot(336);stem(t23,x2_tp3,'.');4fs=64;tp16=15/fs;tp32=31/fs;tp64=63/fs;x3_16=x3(0:1/fs:tp16);x3_32=x3(0:1/fs:tp32);x3_64=x3(0:1/fs:tp64);Xk16=fft(x3_16,16);Xk32=fft(x3_32,32);Xk64=fft(x3_64,64);subplot(337);stem(2*(0:15)/16,abs(Xk16),'.');xlabel('\omega/\pi');subplot(338);stem(2*(0:31)/32,abs(Xk32),'.');xlabel('\omega/\pi');subplot(339);stem(2*(0:63)/64,abs(Xk64),'.');xlabel('\omega/\pi');024x10-300.51024x10-300.51024x10-300.51024x10-3-10105x10-3-10100.0050.01-10101201020/01201020/01202040/图2运行结果(4)利用DFT的方式计算下面两序列的线性卷积:21121121)(0,,,,,,,)(nnx,02310)(0,,,,)(nnh。答:matlab编程如下:clear;clc;xn=[1,2,1,1,2,1,1,2];hn=[0,1,3,2,0];yn=conv(xn,hn);subplot(211);stem(0:length(yn)-1,yn,'.');axis([0,14,0,10]);title('线性卷积')xnk=[xn,zeros(1,12-length(xn))];hnk=[hn,zeros(1,12-length(hn))];xnXk=fft(xnk,12);hnXk=fft(hnk,12);ynXk=xnXk.*hnXk;ynk=ifft(ynXk);subplot(212);stem(0:length(ynk)-1,ynk,'.');axis([0,14,0,10])title('循环卷积')5024681012140510线性卷积024681012140510循环卷积图3运行结果思考题:(1)根据实验中三种不同信号的频谱图,说明参数的变化对信号频谱产生哪些影响?(2)基2FFT相对于DFT在运算速度上有什么改进?五、实验心得:通过本次实验,掌握了用DFT(FFT)对模拟信号进行谱分析的方法,理解了可能出现的分析误差及其原因,以便在实际中正确应用FFT。熟悉了应用FFT实现两个序列的线性卷积的方法。
本文标题:用DFT(FFT)对连续信号进行频谱分析
链接地址:https://www.777doc.com/doc-7275265 .html