怎样用C语言实现FFT算法啊?以2为基的FFT算法的基本运算单元是什么
本文目录
怎样用C语言实现FFT算法啊
1、二维FFT相当于对行和列分别进行一维FFT运算。具体的实现办法如下:先对各行逐一进行一维FFT,然后再对变换后的新矩阵的各列逐一进行一维FFT。相应的伪代码如下所示:for (int i=0; i《M; i++)FFT_1D(ROW是对矩阵的第i列的一种简单表示方法。所以,关键是一维FFT算法的实现。
2、例程:
#include 《stdio.h》#include 《math.h》#include 《stdlib.h》#define N 1000/*定义复数类型*/typedef struct{double real;double img;}complex;complex x.img);}}void add(complex a,complex b,complex *c){c-》real=a.real+b.real;c-》img=a.img+b.img;}void mul(complex a,complex b,complex *c){c-》real=a.real*b.real - a.img*b.img;c-》img=a.real*b.img + a.img*b.real;}void sub(complex a,complex b,complex *c){c-》real=a.real-b.real;c-》img=a.img-b.img;}以2为基的FFT算法的基本运算单元是什么
T/FFT的发展历史离散傅里叶变换(Discrete Fourier Transform,DFT)是数字信号处理最重要的基石之一,也是对信号进行分析和处理时最常用的工具之一。在200多年前法国数学家、物理学家傅里叶提出后来以他名字命名的傅里叶级数之后,用DFT这个工具来分析信号就已经为人们所知。历史上最伟大的数学家之一。 欧拉是第一个使用“函数”一词来描述包含各种参数的表达式的人,例如:y = f(x)。他是把微积分应用于物理学的先驱者之一。 给出了一个用实变量函数表示傅立叶级数系数的方程; 用三角级数来描述离散声音在弹性媒介中传播,发现某些函数可以通过余弦函数之和来表达。 但在很长时间内,这种分析方法并没有引起更多的重视,最主要的原因在于这种方法运算量比较大。直到1965年,Cooley和Tukey在《计算机科学 》发表著名的《机器计算傅立叶级数的一种算法》论文,FFT才开始大规模应用。那个年代,有个肯尼迪总统科学咨询委员会。其中有项研究主题是,对苏联核测试进行检测,Tukey就是其中一员。美国/苏联核测试提案的批准,主要取决于不实地访问核测试设施而做出检测的方法的发展。其中一个想法是,分析离海岸的地震计情况,这种计算需要快速算法来计算DFT。其它应用是国家安全,如用声学探测远距离的核潜艇。所以在军事上,迫切需要一种快速的傅立叶变换算法,这也促进了FFT的正式提出。FFT的这种方法充分利用了DFT运算中的对称性和周期性,从而将DFT运算量从N2减少到N*log2N。当N比较小时,FFT优势并不明显。但当N大于32开始,点数越大,FFT对运算量的改善越明显。比如当N为1024时,FFT的运算效率比DFT提高了100倍。在库利和图基提出的FFT算法中,其基本原理是先将一个N点时域序列的DFT分解为N个1点序列的DFT,然后将这样计算出来的N个1点序列DFT的结果进行组合,得到最初的N点时域序列的DFT值。实际上,这种基本的思想很早就由德国伟大的数学家高斯提出过,在某种情况下,天文学计算(也是现在FFT应用的领域之一)与等距观察的有限集中的行星轨道的内插值有关。由于当时计算都是靠手工,所以产生一种快速算法的迫切需要。 而且,更少的计算量同时也代表着错误的机会更少,正确性更高。高斯发现,一个富氏级数有宽度N=N1*N2,可以分成几个部分。计算N2子样本DFT的N1长度和N1子样本DFT的N2长度。只是由于当时尚欠东风——计算机还没发明。在20世纪60年代,伴随着计算机的发展和成熟,库利和图基的成果掀起了数字信号处理的革命,因而FFT发明者的桂冠才落在他们头上。之后,桑德(G.Sand)-图基等快速算法相继出现,几经改进,很快形成了一套高效运算方法,这就是现在的快速傅立叶变换(FFT)。这种算法使DFT的运算效率提高1到2个数量级,为数字信号处理技术应用于各种信号的实时处理创造了良好的条件,大大推进了数学信号处理技术。1984年,法国的杜哈梅(P.Dohamel)和霍尔曼(H.Hollamann)提出的分裂基块快速算法,使运算效率进一步提高。库利和图基的FFT算法的最基本运算为蝶形运算,每个蝶形运算包括两个输入点,因而也称为基-2算法。在这之后,又有一些新的算法,进一步提高了FFT的运算效率,比如基-4算法,分裂基算法等。这些新算法对FFT运算效率的提高一般在50%以内,远远不如FFT对DFT运算的提高幅度。从这个意义上说,FFT算法是里程碑式的。可以说,正是计算机技术的发展和FFT的出现,才使得数字信号处理迎来了一个崭新的时代。除了......
本文相关文章:

c语言输出时%d,%c这些都分别代表什么?falco是什么意思
2025年4月18日 22:50

c语言二维数组(为什么我觉得C语言中二维数组没用,明明两个一维数组就能解决,为什么要有二维数组存在)
2025年4月13日 12:50

thread是什么意思中文(C语言中Thread与Task有什么区别)
2025年4月12日 15:30

关于易语言的 驱动器框 目录框 文件框?怎样修改ppt文件边框
2025年4月11日 17:50

哪一个编程语言比较好?什么是pypl,以及tiobe-index的不同
2025年4月5日 03:30

java接口代码(不同编程语言的程序可不可以通过接口相互调用)
2025年4月1日 13:00

stakeholder theory(英语语言文学硕士毕业论文答辩一般会问什么问题)
2025年3月29日 17:00

在C语言中 z=x>y x: y; 这个表达式是什么意思啊,求解?if(i=a<ba:b;i>0;i--)啥意思
2025年3月29日 11:50

谭浩强c语言电子版(哪本书最适合初学电工电子比如初学C语言就用谭浩强C程序设计,单片机就郭天祥单片机)
2025年3月23日 06:30

易语言辅助论坛(请问想学写游戏脚本,是学易语言还是学按键精灵)
2025年3月18日 14:40
更多文章:

pil船公司货物跟踪(物流里ESL HPL PIL TSL NCL是什么船公司啊)
2025年2月14日 20:10

18岁以上站长统计(请问站长统计是什么来的,对自己本身的网站有什么好处呢,可以提高点击量吗)
2025年3月5日 10:30

pdb文件下载(怎样从生物大分子数据库PDB批量下载pdb文件)
2025年4月19日 20:20

ios6.1越狱后必添加的软件源还有插件有哪些?那个插件源可以下载旧插件
2025年3月31日 15:10

变量游戏下载(怎么才能知道自己电脑需要设置环境变量下载的java玩游戏时老是说找不到)
2025年4月2日 12:50

嵌入式35岁后能找到工作吗(请问关于计算机方面嵌入式系统就业前景如何)
2025年4月17日 15:20

js下拉菜单怎么设置(js使用DOM设置单选按钮、复选框及下拉菜单的方法)
2025年2月15日 20:50