ImageVerifierCode 换一换
格式:DOC , 页数:10 ,大小:314.50KB ,
资源ID:12100410      下载积分:8 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/12100410.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(用c语言实现的FFT.doc)为本站上传会员【鼓***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

用c语言实现的FFT.doc

1、用c语言实现的FFT 一、对FFT的介绍 1. FFT(Fast Fourier Transformation),即为快速傅里叶变换,是离散傅里叶变换的快速算法,它是根据离散傅里叶变换的奇、偶、虚、实等特性,对离散傅里叶变换的算法进行改进获得的。 2.FFT算法的基本原理       FFT算法是把长序列的DFT逐次分解为较短序列的DFT。       按照抽取方式的不同可分为DIT-FFT(按时间抽取)和DIF-FFT(按频率抽取)算法。按蝶形运算的构成不同可分为基2,基4,基8,以及任意因子的类型。 3.迭代关系 4、本次程序的基本过程 我们

2、这次所研究的是数字信号处理中的FFT算法,我们这次所用的数字信号是复数类型的。 (1)所以首先,我们先定义了一个复数结构体,因为是进行复数的运算,我们又相继定义复数的加减乘运算的函数。 (2)紧接着,我们定义了进行FFT计算的fft()快速傅里叶变换函数initW()  初始化变换核函数即旋转因子的计算,change() 变址函数,output()输出傅里叶变换的结果的函数。 (3)定义主函数,并调用定义好的相关子函数,利用fft()中的蝶形运算以及change()函数来完成从时间域上选取的DIT-FFT。 EbodE。 二、FFT中码位倒置排序 1、码位倒置的实现方法:

3、         (1)简单的利用按位与、或循环实现         (2)利用公式推导的迭代方法 2、为什么要进行码位倒置   因为由于FFT的计算特性,如果按照正常顺序输入,而没有进行码位倒置的话,就会以乱序输出,就不便于我们后续对信号的相关性质进行研究了,所以DIT-FFT算法就是在进行FFT计算之前,进行分奇偶后的码位倒置运算,即二进制数的倒位。        3、倒位序由奇偶分组造成,以N=8为例,说明如下: rAY2v。 三、蝶形运算 由 按照上述公式的规律进行逐级分解,直到2点DFT,如下是N=8时的蝶形算法分析图: 四、FF

4、T算法中蝶形算法的基本思想分析 (1)我们知道N点FFT运算可以分成log2(N)级,每一级都有N/2个碟形,FFT的基本思想是用3层循环完成全部运算(N点FFT)。 (2)第一层循环:由于N=2^m需要m级计算,第一层循环对运算的级数进行控制。(stages) (3)第二层循环:由于第L级有2^(L-1)个蝶形因子(乘数),第二层循环根据乘数进行控制,保证对于每一个蝶形因子第三层循环要执行一次,这样,第三层循环在第二层循环控制下,每一级要进行2^(L-1)次循环计算.(选择W) (4)第三层循环:由于第L级共有N/2^L即2^(n-L)个群,并且同一级内不同群

5、的乘数分布相同,当第二层循环确定某一乘数后,第三层循环要将本级中每个群中具有这一乘数的蝶形计算一次,即第三层循环每执行完一次要进行N/2^L个碟形计算。(执行不同group中具有相同W的蝶形运算) (5)可以得出结论:在每一级中,第三层循环完成N/2^L个碟形计算;第二层循环使第三层循环进行 2^(L-1)次,因此,第二层循环完成时,共进行2^(L-1) *N/2^L=N/2个碟形计算。实质是:第二、第三层循环完成了第L级的计算。 8UMjY。 五、用c语言实现的FFT算法如下: #include

6、 #include #include #define N 1000 /*定义复数类型*/ typedef struct{ double real; double img; }complex; complex x[N], *W; /*输入序列,变换核*/ int size_x=0; /*输入序列的大小,在本程序中仅限2的次幂*/ double PI; /*圆周率*/ void fft(); /*快速傅里叶变换*/ void initW(); /*初始化变换核*/ void change

7、); /*变址*/ void add(complex ,complex ,complex *); /*复数加法*/ void mul(complex ,complex ,complex *); /*复数乘法*/ void sub(complex ,complex ,complex *); /*复数减法*/ void output();/*输出快速傅里叶变换的结果*/ int main() { int i; /*输出结果*/ system("cls"); PI=atan(1)*4; printf

8、" 输出DIT方法实现的FFT结果\n");R3QBs。 printf("Please input the size of x:\n");//输入序列的大小 scanf("%d",&size_x); printf("Please input the data in x[N]:\n");//输入序列的实部和虚部bc7mA。 for(i=0;i

9、g); } printf("输出倒序后的序列\n"); initW();//调用变换核 fft();//调用快速傅里叶变换 printf("输出FFT后的结果\n"); output();//调用输出傅里叶变换结果函数 return 0; } /*快速傅里叶变换*/ void fft() { int i=0,j=0,k=0,l=0; complex up,down,product; change(); //调用变址函数 for(i=0;i< log(size_x)/log(2) ;i++) /*一级蝶形运算 sta

10、ge */17QBK。 { l=1<

11、[j+k]=up; x[j+k+l]=down; } } } } /*初始化变换核,定义一个变换核,相当于旋转因子WAP*/ void initW() { int i; W=(complex *)malloc(sizeof(complex) * size_x); //生成变换核ftvYf。 for(i=0;i

12、 /*变址计算,将x(n)码位倒置*/ void change() { complex temp; unsigned short i=0,j=0,k=0; double t; for(i=0;i0 ) //利用按位与以及循环实现码位颠倒 { j=j<<1; j|=(k & 1); k=k>>1; } if(j>i) //将x(n)的码位互换 {

13、 temp=x[i]; x[i]=x[j]; x[j]=temp; } } output(); } /*输出傅里叶变换的结果*/ void output() { int i; printf("The result are as follows:\n"); for(i=0;i=0.0001)printf("+%.4fj\n",x[i].img); else if(fabs(x[i].img)<0.0001)pri

14、ntf("\n"); else printf("%.4fj\n",x[i].img); } } void add(complex a,complex b,complex *c) //复数加法的定义KvVBn。 { c->real=a.real+b.real; c->img=a.img+b.img; } void mul(complex a,complex b,complex *c) //复数乘法的定义4QvCg。 { c->real=a.real*b.real - a.img*b.img; c->img=a.real*b.img + a

15、img*b.real; } void sub(complex a,complex b,complex *c) //复数减法的定义KVN3z。 { c->real=a.real-b.real; c->img=a.img-b.img; } 六、FFT原理的理解和程序设计中遇到的相关问题及解决方法 1、遇到的相关问题: (1)首先一开始不知道什么是FFT,以及FFT原理是什么 (2)不理解FFT中迭代关系的推导以及缘由 (3)不理解变址计算的原理 (4)对蝶形运算的推导与原理的理解不透彻 (5)编程过程中对变址计算即对按位与的变换形式的不理解 2、解决的方法: (1)到图书馆借相关的书籍理解相关的原理和过程 (2)到百度收索相关的资料促进理解相应的原理过程 (3)向学长学姐请教或老师的指导 七、总结SGsgW。 从这次的考核中我学到了一些有关数字信号处理的相关知识,即快速傅里叶变换的原理,虽然并不是非常深入的去学习,但却深刻的领悟到了,弄懂最基本的原理是理解的关键,只有弄懂了最基本的原理并具备一定的编程语言基础,才能顺利完成一个项目。在这次的学习过程中,我对原理的理解是通过对大量书籍和上网查阅资料以及老师的指导才渐渐的理解的。所以我觉得做好一件事,需要有坚持不懈的努力和一点一滴的积累。b6y7q。

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服