您的位置:首页 > 文旅 > 美景 > 数字信号||快速傅里叶变换(FFT)(4)

数字信号||快速傅里叶变换(FFT)(4)

2024/10/5 19:09:57 来源:https://blog.csdn.net/m0_60469045/article/details/140655339  浏览:    关键词:数字信号||快速傅里叶变换(FFT)(4)

实验四  快速傅里叶变换(FFT)

一、实验目的

(1)加深对快速傅里叶变换(FFT)基本理论的理解。
(2)了解使用快速傅里叶变换(FFT)计算有限长序列和无限长序列信号频谱的方法。
(3)掌握用MATLAB语言进行快速傅里叶变换时常用的子函数。

二、实验涉及的MATLAB子函数
1.fft
功能:一维快速傅里叶变换(FFT)。
调用格式:y=fft(x);利用FFT算法计算矢量x的离散傅里叶变换,当x为矩阵时,y为矩阵x每一列的FFT。当x的长度为2的幂次方时,则fft函数采用基2的FFT算法,否则采用稍慢的混合基算法。

y=fft(x,n);采用n点FFT。当x的长度小于n时,fft函数在x的尾部补零,以构成n点数据;当x的长度大于n时,fft函数会截断序列x。当x为矩阵时,fft函数按类似的方式处理列长度。

三、实验原理

1.用MATLAB提供的子函数进行快速傅里叶变换
从理论学习可知,DFT是唯一在时域和频域均为离散序列的变换方法,它适用于有限长序列。尽管这种变换方法是可以用于数值计算的,但如果只是简单的按照定义进行数据处理,当序列长度很大时,则将占用很大的内存空间,运算时间将很长。

快速傅里叶变换是用于DFT运算的高效运算方法的统称,FFT只是其中的一种。FFT主要有时域抽取算法和频域抽取算法,基本思想是将一个长度为N的序列分解成多个短序列,如基2算法、基4算法等,大大缩短了运算的时间。
MATLAB中提供了进行快速傅里叶变换(FFT)的子函数,用fft计算DFT,用ifft计算IDFT。

四、实验任务

(1) 认真阅读实验原理,明确本次实验任务,读懂例题程序,了解实验方法,结合基本原理理解每一条语句的含义。
(2) 运行例题程序,编写实验程序。
(3)列写调试通过的实验程序,打印或描绘实验程序产生的图形和数据。

 例14-1 已知一个长度为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(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所示。

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计算信号的DFTsubplot(2,1,2);stem(k,abs(Xk));title('Xk=DFT(x(n))');xn1=ifft(Xk,N);%用IFFT计算信号的IDFTsubplot(2,2,2);stem(n,xn1);title('x(n)=IDFT(Xk)');

                图14-1 例14-1用FFT求有限长序列的傅里叶变换

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com