您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > DFT和FFT实验(上传)
DFT和FFT实验一、实验目的和要求1、掌握DFT变换2、掌握DFT性质3、掌握快速傅立叶变换(FFT)二、实验内容和原理1、实验内容1)求有限长离散时间信号的离散时间傅立叶变换)(jeX并绘图。已知njenx39.0)(100n已知10102)(nnxn2)已知序列)sin(2)82.0cos()(nnnx,500n,绘制)(nx及其离散傅立叶变换)(kX的幅度、相位图。3)设)()2.0sin()(nrandnnnx,10Nn,其中,randn(n)为高斯白噪声。求出mN4,m=2,3,4的matlab采用不同算法的执行时间。4)研究高密度频谱和高分辨率频谱。设有连续信号)1092cos()1072cos()105.62cos()(333ttttx以采样频率kHzfs32对信号x(t)采样,分析下列三种情况的幅频特性。采集数据长度N=16点,做N=16点的FFT,并画出幅频特性。采集数据长度N=16点,补零到256点,做N=256点的FFT,并画出幅频特性。采集数据长度N=256点,做N=256点的FFT,并画出幅频特性。观察三种不同频率特性图,分析和比较它们的特点以及形成的原因。2、实验原理1)DFT序列x(n)的离散时间傅里叶变换(DTFT)表示为njnjenxeX)()(,如果x(n)为因果有限长序列,n=0,1,...,N-1,则x(n)的DTFT表示为njNnjenxeX10)()(x(n)的离散傅里叶变换(DFT)表达式为)1,...,1,0()()(210NkenxkXnkNjNn序列的N点DFT是序列DTFT在频率区间[0,2π]上的N点灯间隔采样,采样间隔为2π/N。通过DFT,可以完成由一组有限个信号采样值x(n)直接计算得到一组有限个频谱采样值X(k)。X(k)的幅度谱为)()()(22kXkXkXIR,其中下标R和I分别表示取实部、虚部的运算。X(k)的相位谱为装订线)()(arctan)(kXkXkRI。离散傅里叶反变换(IDFT)定义为)1,...,1,0()(1)(210NnekXNnxnkNjNn。2)FFT快速傅里叶变换(FFT)是DFT的快速算法,并不是一个新的映射。FFT利用了nNje2函数的周期性和对称性以及一些特殊值来减少DFT的运算量,可使DFT的运算量下降几个数量级,从而使数字信号处理的速度大大提高。若信号是连续信号,用FFT进行谱分析时,首先必须对信号进行采样,使之变成离散信号,然后就可以用FFT来对连续信号进行谱分析。为了满足采样定理,一般在采样之前要设置一个抗混叠低通滤波器,且抗混叠滤波器的截止频率不得高于与采样频率的一半。比较DFT和IDFT的定义,两者的区别仅在于指数因子的指数部分的符号差异和幅度尺度变换,因此可用FFT算法来计算IDFT。三、主要仪器设备Matlab四、操作方法和实验步骤1、认真分析原函数,取点2、用matlab编写程序,运行程序得出结果五、实验数据记录、处理和分析1、求有限长离散时间信号的离散时间傅立叶变换)(jeX并绘图。已知njenx39.0)(100n已知10102)(nnxn【解答】思路:这是一道DFT的题,按照题目要求只需要取11个点即可。第(1)小题M文件源代码N=11;%取点个数为11个j=sqrt(-1);%定义j为复数单位f=inline('(0.9*exp(j*pi/3))^n','n');%定义一个函数f(n)W=0:2*pi/1000:2*pi;%定义离散域的基本频率W为数组,间距为2*pi/1000Xw=zeros(size(W));%定义一个与W位数相等的数组forn=0:N-1Xw=Xw+f(n)*exp(-j*W*n);end%对f(n)函数做DFT变换xn=[];forn=0:N-1xn(n+1)=f(n);end%将f(n)的值放进数组xn里面,便于最后画出xn的图像magXw=abs(Xw);%定义一个数组magXw,将abw(Xw)的值赋给它angleXw=angle(Xw);%定义数组angleXw,将angle(Xw)的值赋给它figure(1);plot(xn,'.-');xlabel('n');ylabel('x(n)');%画出xn的图figure(2);k=0:1:N-1;plot(W,magXw,'-')xlabel('W');ylabel('|X(W)|');%画出magXw的图像figure(3);plot(W,angleXw,'-');xlabel('W');ylabel('angle(X(W))');%画出angleXw的图像运行结果xn图像:X(W)的幅度图-0.8-0.6-0.4-0.200.20.40.60.81-0.6-0.4-0.200.20.40.60.8nx(n)X(W)的相位图【分析】X(Ω)=∑(0.9ejπ3)n·e−jΩn10n=0=1−(0.9ej(π3−Ω))111−0.9ej(π3−Ω),|X(Ω)|=|1−(0.9ej(π3−Ω))11||1−0.9ej(π3−Ω)|可见X(Ω)的幅度频谱有11-1=10个极大,11-1=10个极小。而X(Ω)的相位则有11-1=10个极大,11-1=10个极小,并且相位在-π2和π2之间摆动。第(2)小题M文件源代码N=10;%取点个数为11个j=sqrt(-1);%定义j为复数单位0123456701234567W|X(W)|01234567-1.5-1-0.500.511.5Wangle(X(W))f=inline('2^n','n');%定义一个函数f(n)W=0:2*pi/1000:2*pi;%定义离散域的基本频率,将其设置为间距为2*pi/1000的数组Xw=zeros(size(W));%定义一个数组Xw,位数与W相等forn=-N:NXw=Xw+f(n)*exp(-j*W*n);end%对f(n)函数做DTFT变换xn=[];%定义一个数组xnforn=-N:Nxn(n+1+N)=f(n);end%将f(n)的值放进数组xn里面,便于最后画出xn的图像magXw=abs(Xw);%将X(W)的模值放进数组magXwangleXw=angle(Xw);%将X(W)的相位放进数组magXwfigure(1);plot(xn,'.-');xlabel('n');ylabel('x(n)');%画出xn的图figure(2);plot(W,magXw,'-')xlabel('W');ylabel('|X(w)|');%画出magXw的图像figure(3);plot(W,angleXw,'-');xlabel('W');ylabel('angle(X(w))');%画出angleXw的图像xn图像X(W)的幅度图0510152025020040060080010001200nx(n)X(W)的相位图【分析】X(Ω)=∑2n·e−jΩn10n=−10=(2e−jΩ)−10(1−(2e−jΩ)21)1−2e−jΩ,|X(Ω)|=2−10|1−(2e−jΩ)21||1−2e−jΩ|可见X(Ω)的幅度有一个极大值,一个极小值。X(Ω)的相位在−π到π之间来回振动,并且中间出现突变的情况。2)已知序列)sin(2)82.0cos()(nnnx,500n,绘制)(nx及其离散傅立叶变换)(kX的幅度、相位图。【解答】012345676008001000120014001600180020002200W|X(w)|01234567-4-3-2-101234Wangle(X(w))思路:这是一道DFT的题,按照题目要求只需要取51个点即可。M文件源代码N=51;%取点个数为50个j=sqrt(-1);%定义j为复数单位f=inline('cos(0.82*pi*n)+2*sin(pi*n)','n');%定义一个函数f(n)Xk=[];%定义一个数组XkW=2*pi/N;%定义离散域的基本频率fork=1:NXk(k)=0;forn=0:N-1Xk(k)=Xk(k)+f(n)*exp(-j*(k-1)*W*n);endend%对f(n)函数做DFT变换xn=[];%定义一个数组xnforn=0:N-1xn(n+1)=f(n);end%将f(n)的值放进数组xn里面,便于最后画出xn的图像magXk=[];%定义一个数组magXkfork=1:NmagXk(k)=abs(Xk(k));end%将X(kW)的模值放进数组magXkangleXk=[];%定义数组angleXkfork=1:NangleXk(k)=angle(Xk(k));end%将X(kW)的相位放进数组magXkfigure(1);plot(xn,'.-');xlabel('n');ylabel('x(n)');%画出xn的图figure(2);k=0:1:N-1;plot(k,magXk,'+-')xlabel('k');ylabel('|X(k)|');%画出magXk的图像figure(3);plot(k,angleXk,'x-');xlabel('k');ylabel('angle(X(k))');%画出angleXk的图像命令窗口中的运行及其结果:xn图像Xk的幅度图Xk的相位图0102030405060-1-0.8-0.6-0.4-0.200.20.40.60.81nx(n)05101520253035404550051015202530k|X(k)|【分析】X(k)=∑(cos0.82πn+2sinπn)e−jk2π51n=∑ej0.82πn+e−j0.82πn250n=050n=0e−jk2π51n=12∑(ej(0.82π−k2π51)n+e−j(0.82π+k2π51)n)50n=0=12(1−(ej(0.82π−k2π51))511−ej(0.82π−k2π51)+1−(e−j(0.82π+k2π51))511−e−j(0.82π+k2π51))可见X(k)的幅度频谱拥有两个峰值,X(k)的相位频谱在−π到π之间来回振动,且中间存在3个台阶式的向下跳变,一个台阶式的向上跳变。3.设)()2.0sin()(nrandnnnx,10Nn,其中,randn(n)为高斯白噪声。求出mN4,m=2,3,4的matlab采用不同算法的执行时间。【解答】思路:计算DFT算法和FFT算法的运行时间可以使用的etime函数M文件源代码m=input('m=:');%输入m值N=4^m;%求出所取得x(n)的点数j=sqrt(-1);%定义j为复数单位arr=[];%定义一个数组arrW=2*pi/N;%定义离散域的基本频率dft_time=0;%定义dft_time为0t1=clock;%此处为dft计算的时间起点fork=1:Narr(k)=0;forn=0:N-1arr(k)=arr(k)+(sin(0.2*pi*n)+rand(1))*exp(-j*(k-1)*W*n);end05101520253035404550-3-2-101234kangle(X(k))end%对x(n)做dft变换dft_time=etime(clock,t1)%得出dft变换所花的时间Wn=exp(-j*2*pi/N);%求出旋转因子xn=zeros(1,N);%定义一个N位数组fft_time=0;%定义fft_time为0t2=clock;%此处为fft计算的时间起点forn=0:N-1xn(n+1)=sin(0.2*pi*n)+randn(1);%将x(n)的值放入数组xn中endn1=fliplr(dec2bin([0:N-1]));%码位倒置步骤1:将码位转换为二进制,再进行倒序n2=[bin2dec(n1)];%码位倒
本文标题:DFT和FFT实验(上传)
链接地址:https://www.777doc.com/doc-2909907 .html