实序列FFT算法的C语言实现,实序列FFT算法的C语言实现

41528d3028836879cd698677c3999917.gif实序列FFT算法的C语言实现

实序列FFT算法的C语言实现 学生:XX 指导教师:XX 内容摘要:DFT和IDFT是数字信号分析与处理中的一种重要运算和变换,但直接根据定义计算DFT时,运算量大,不能实时得到计算结果。特别是在实际应用中,N都取得比较大,此时,由于乘法和加法的次数都近似与N的平方成正比,这将极大增加DFT计算所需时间。为此,提出了许多DFT和IDFT的快速算法,称为快速傅里叶变换(FFT)和快速傅里叶反变换(IFFT)。 本文较为系统地阐述了快速傅里叶变换的算法原理然后用MATLAB实现了快速傅里叶变换。论文首先首要介绍了FT与DFT的定义、DFT与FFT的关系, 然后重点介绍基2时域抽取FFT算法以及其原理和运算流图,再应用C语言实现了实序列的FFT。最后在Matlab软件上进行仿真,仿真结果验证了设计的正确性。 关键词:傅里叶变换 快速傅立叶变换 Matlab 仿真 Realization of FFT algorithm for real sequence With C program Abstract:DFT and IDFT are important trans and processing in digital signal processing. However, there are large amount of computation by directly calculating according to the definition of DFT. Especially in the practical application, N is bigger, at this time, because the time of multiplication and addition are approximately proportional to the square of N, which will greatly increase the calculation time needed for DFT. Therefore, many DFT and IDFT fast algorithm are raised, which are called FFT and IFFT. In this paper relatively systematically elaborated the fast Fourier trans algorithm principle and use MATLAB software to realize the fast Fourier trans. The paper first introduces the definition of FT and DFT,the relationship between DFT and FFT, and then mainly introduces DIT-FFT ,including its principle and operation flow diagram, and finally used C language to realize the real sequence FFT.The designs are simulated in Matlab software, the results of the simulation confirm the exactness of the design. Keywords:Fourier transation fast Fourier transation Matlab simulation 目 录 前言1 1 序列的FT和DFT1 1.1 序列的FT1 1.2 序列的DFT2 1.2.1 DFT的定义和计算2 1.2.2 实序列的DFT2 2 FFT算法3 2.1 基2时域抽取FFT算法3 2.1.1 基本原理4 2.1.2 DIT-FFT算法的运算流图5 2.1.3 DIT-FFT算法的运算量和存储量5 2.2 实序列的FFT算法6 3 实序列FFT算法的C语言实现7 3.1 VS2010简介7 3.1.1 新建项目8 3.1.2 新建文件8 3.2 实序列FFT算法子程序9 3.2.1 倒序10 3.2.2 蝶形运算12 3.3 实序列FFT算法主程序15 3.3.1 原始序列的产生和读取15 3.3.2 计算结果的显示和输出16 3.4 运行结果分析17 3.4.1 计算结果数据分析17 3.4.2 N点DFT波形分析17 4 结束语20 附 录:21 参考文献:27 实序列FFT算法的C语言实现 前言 在实际的数字系统中,DFT是一种得到了广泛的应用的、重要的信号处理手段,但它的运算效率非常低。随着DFT输入的点数增加到数百或数千,DFT需要的运算量变得非常大。快速傅里叶变换(FFT)可使实现DFT的运算量下降几个数量级,从而使数字信号处理的速度大大提高[1]。 FFT是离散傅立叶变换(DFT)的快速算法,可以将一个信号变换到频域。有些信号在时域上是不易看出有什么特征的,但是如果变换到频域之后,就很容易了。FFT可以将一个信号的频谱提取出来,这在频谱分析方面也是经常用的。 实际中需要做快速傅里叶变换的多为实序列数据,而其变换算法都是以复数序列作为输入。本设计利用频域的性质,将实序列数据变为复数序列,再进行FFT,以提高效率。 本设计就是要求在熟悉DFT及FFT算法基本原理的基础上,编制C语言程序实现实数序列的FFT算法。 1 序列的FT和DFT 序列的傅里叶变换(Fourier Trans,FT)和离散傅里叶变换(DFT)都是对序列的频域描述,它们揭示了序列由那些分量构成,各分量的幅度和相位大小。 1.1 序列的FT 序列x(n)的傅里叶变换又称为离散时间傅里叶变换(DTFT),其定义为 (1.1-1) 式中,w 称为数字角频率。如果已知x(n)的傅里叶变换X(ejw),则可下式求得其时域表达式 (1.1-2) 上式称为序列的傅里叶反变换(IFT)。 序列的傅里叶变换是w 的连续函数,且一般情况下为复变函数,并可表示为 其中,和分别称为幅度谱和相位谱。 此外,根据的周期性可知,序列的频谱及其幅度谱和相位谱都是关于w 以2p为周期的周期函数。 1.2 序列的DFT 序列的FT变换为w 的连续函数,不便于用计算机程序进行辅助分析和计算。为了便于用计算机辅助求解和分析,提出了离散傅里叶变换(DFT)。 1.2.1 DFT的定义和计算 长度为M的有限长序列x(n),n=0~M-1,其N点DFT和IDFT(离散傅里叶反变换)分别定义为 ,k=0~N-

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值