欢迎来到天天文库
浏览记录
ID:59235254
大小:370.50 KB
页数:42页
时间:2020-09-22
《第1章快速傅里叶变换ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.1市场与市场营销1.2我国汽车市场的发展与现状复习思考题实验14快速傅里叶变换(FFT)一、实验目的(1)加深对快速傅里叶变换(FFT)基本理论的理解。 (2)了解使用快速傅里叶变换(FFT)计算有限长序列和无限长序列信号频谱的方法。 (3)掌握用MATLAB语言进行快速傅里叶变换时常用的子函数。二、实验涉及的MATLAB子函数1.fft功能:一维快速傅里叶变换(FFT)。调用格式:y=fft(x);利用FFT算法计算矢量x的离散傅里叶变换,当x为矩阵时,y为矩阵x每一列的FFT。当x的长
2、度为2的幂次方时,则fft函数采用基2的FFT算法,否则采用稍慢的混合基算法。y=fft(x,n);采用n点FFT。当x的长度小于n时,fft函数在x的尾部补零,以构成n点数据;当x的长度大于n时,fft函数会截断序列x。当x为矩阵时,fft函数按类似的方式处理列长度。2.ifft功能:一维快速傅里叶逆变换(IFFT)。调用格式:y=ifft(x);用于计算矢量x的IFFT。当x为矩阵时,计算所得的y为矩阵x中每一列的IFFT。 y=ifft(x,n);采用n点IFFT。当length(x)3、,在x中补零;当length(x)>n时,将x截断,使length(x)=n。3.fftshift功能:对fft的输出进行重新排列,将零频分量移到频谱的中心。调用格式:y=fftshift(x);对fft的输出进行重新排列,将零频分量移到频谱的中心。当x为向量时,fftshift(x)直接将x中的左右两半交换而产生y。 当x为矩阵时,fftshift(x)同时将x的左右、上下进行交换而产生y。三、实验原理 1.用MATLAB提供的子函数进行快速傅里叶变换从理论学习可知,DFT是唯一在时域和频域4、均为离散序列的变换方法,它适用于有限长序列。尽管这种变换方法是可以用于数值计算的,但如果只是简单的按照定义进行数据处理,当序列长度很大时,则将占用很大的内存空间,运算时间将很长。快速傅里叶变换是用于DFT运算的高效运算方法的统称,FFT只是其中的一种。FFT主要有时域抽取算法和频域抽取算法,基本思想是将一个长度为N的序列分解成多个短序列,如基2算法、基4算法等,大大缩短了运算的时间。 MATLAB中提供了进行快速傅里叶变换(FFT)的子函数,用fft计算DFT,用ifft计算IDFT。例14-1已5、知一个长度为8点的时域离散信号,n1=0,n2=7,在n0=4前为0,n0以后为1。对其进行FFT变换,作时域信号及DFT、IDFT的图形。解程序如下: n1=0;n2=7;n0=4; n=n1:n2;N=length(n); xn=[(n-n0)>=0];%建立时域信号 subplot(2,2,1);stem(n,xn); title(¢x(n)¢);k=0:N-1; Xk=fft(xn,N);%用FFT计算信号的DFT subplot(2,1,2);stem(k,abs6、(Xk)); title(¢Xk=DFT(x(n))¢); xn1=ifft(Xk,N);%用IFFT计算信号的IDFT subplot(2,2,2);stem(n,xn1); title(¢x(n)=IDFT(Xk)¢); 运行结果如图14-1所示。图14-1例14-1用FFT求有限长序列的傅里叶变换例14-2将例13-5已知的两个时域周期序列分别取主值,得到x1=[1,1,1,0,0,0],x2=[0,1,2,3,0,0],求时域循环卷积y(n)并用图形表示。解本例将例13-7、5使用DFT处理的计算,改为用FFT和IFFT进行循环卷积。 程序如下(作图程序部分省略): xn1=[0,1,2,3,0,0];%建立x1(n)序列 xn2=[1,1,1,0,0,0];%建立x2(n)序列 N=length(xn1);n=0:N-1;k=0:N-1; Xk1=fft(xn1,N);%由x1(n)的FFT求X1(k) Xk2=fft(xn2,N);%由x2(n)的FFT求 Yk=Xk1.*Xk2;%Y(k)=X1(k)X2(k) yn=ifft(Yk,8、N);%由Y(k)的IFFT求y(n) yn=abs(yn) 运行结果如图13-5所示,与例13-5用DFT计算的结果一致。2.用FFT计算有限长序列的频谱1)基本概念 一个序号从n1到n2的时域有限长序列x(n),它的频谱X(ejw)定义为它的离散傅里叶变换,且在奈奎斯特(Nyquist)频率范围内有界并连续。序列的长度为N,则N=n2-n1+1。计算x(n)的离散傅里叶变换(DFT)得到的是X(ejw)的N个样本点X(ejwk)。其中数字
3、,在x中补零;当length(x)>n时,将x截断,使length(x)=n。3.fftshift功能:对fft的输出进行重新排列,将零频分量移到频谱的中心。调用格式:y=fftshift(x);对fft的输出进行重新排列,将零频分量移到频谱的中心。当x为向量时,fftshift(x)直接将x中的左右两半交换而产生y。 当x为矩阵时,fftshift(x)同时将x的左右、上下进行交换而产生y。三、实验原理 1.用MATLAB提供的子函数进行快速傅里叶变换从理论学习可知,DFT是唯一在时域和频域
4、均为离散序列的变换方法,它适用于有限长序列。尽管这种变换方法是可以用于数值计算的,但如果只是简单的按照定义进行数据处理,当序列长度很大时,则将占用很大的内存空间,运算时间将很长。快速傅里叶变换是用于DFT运算的高效运算方法的统称,FFT只是其中的一种。FFT主要有时域抽取算法和频域抽取算法,基本思想是将一个长度为N的序列分解成多个短序列,如基2算法、基4算法等,大大缩短了运算的时间。 MATLAB中提供了进行快速傅里叶变换(FFT)的子函数,用fft计算DFT,用ifft计算IDFT。例14-1已
5、知一个长度为8点的时域离散信号,n1=0,n2=7,在n0=4前为0,n0以后为1。对其进行FFT变换,作时域信号及DFT、IDFT的图形。解程序如下: n1=0;n2=7;n0=4; n=n1:n2;N=length(n); xn=[(n-n0)>=0];%建立时域信号 subplot(2,2,1);stem(n,xn); title(¢x(n)¢);k=0:N-1; Xk=fft(xn,N);%用FFT计算信号的DFT subplot(2,1,2);stem(k,abs
6、(Xk)); title(¢Xk=DFT(x(n))¢); xn1=ifft(Xk,N);%用IFFT计算信号的IDFT subplot(2,2,2);stem(n,xn1); title(¢x(n)=IDFT(Xk)¢); 运行结果如图14-1所示。图14-1例14-1用FFT求有限长序列的傅里叶变换例14-2将例13-5已知的两个时域周期序列分别取主值,得到x1=[1,1,1,0,0,0],x2=[0,1,2,3,0,0],求时域循环卷积y(n)并用图形表示。解本例将例13-
7、5使用DFT处理的计算,改为用FFT和IFFT进行循环卷积。 程序如下(作图程序部分省略): xn1=[0,1,2,3,0,0];%建立x1(n)序列 xn2=[1,1,1,0,0,0];%建立x2(n)序列 N=length(xn1);n=0:N-1;k=0:N-1; Xk1=fft(xn1,N);%由x1(n)的FFT求X1(k) Xk2=fft(xn2,N);%由x2(n)的FFT求 Yk=Xk1.*Xk2;%Y(k)=X1(k)X2(k) yn=ifft(Yk,
8、N);%由Y(k)的IFFT求y(n) yn=abs(yn) 运行结果如图13-5所示,与例13-5用DFT计算的结果一致。2.用FFT计算有限长序列的频谱1)基本概念 一个序号从n1到n2的时域有限长序列x(n),它的频谱X(ejw)定义为它的离散傅里叶变换,且在奈奎斯特(Nyquist)频率范围内有界并连续。序列的长度为N,则N=n2-n1+1。计算x(n)的离散傅里叶变换(DFT)得到的是X(ejw)的N个样本点X(ejwk)。其中数字
此文档下载收益归作者所有