版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、快速傅里叶变换的基2fft算法的c 实现快速傅里叶变换的基2fft算法的c+实现2011-01-19 05:26快速傅里叶变换的基本原理由于公式不好显示请读者参考其它文章或书籍,本文重点给出了时域抽取法fft的c+实现。下面是算法的流程图倒序的流程图c+实现代码:1.fft.h#pragma once#ifndef fft_h#define fft_h#include cstring#include cmath using namespace std;#define pi 3.141592 class fftprivate:void changeorder(double*xr,double*x
2、i,int n);public:fft(void);void fft_1d(double*ctxr,double*ctxi,double*cfxr,double*cfxi,int len);void rfft_1d(double*ctxr,double*cfxr,double*cfxi,int len);void ifft_1d(double*cfxr,double*cfxi,double*ctxr,double*ctxi,int len);void rifft_1d(double*cfxr,double*cfxi,double*ctxr,int len);fft(void);#endif 2
3、.fft.cpp#include.fft.hfft:fft()/倒序实现/xr实部,xi虚部,n为2的幂/void fft:changeorder(double*xr,double*xi,int n)double temp;int k;int lh=n/2;int j=lh;int n1=n-2;for(int i=1;i=n1;i+)if(i j)temp=xri;xri=xrj;xrj=temp;temp=xii;xii=xij;xij=temp;k=lh;while(j=k)j=j-k;k=(int)(k/2+0.5);j=j+k;/复数fft/ctxr和ctxi的长度为len/cfxr
4、和cfxi的长度为2的幂/void fft:fft_1d(double*ctxr,double*ctxi,double*cfxr,double*cfxi,int len)int m=ceil(log(double)len)/log(2.0);int l,b,j,p,k;double rkb,ikb;int n=1 m;double*rcos=new doublen/2;double*isin=new doublen/2;for(l=0;l n/2;l+)rcosl=cos(l*pi*2/n);isinl=sin(l*pi*2/n);memcpy(cfxr,ctxr,sizeof(double)
5、*len);memcpy(cfxi,ctxi,sizeof(double)*len);for(l=len;l n;l+)cfxrl=0;cfxil=0;changeorder(cfxr,cfxi,n);/倒序for(l=1;l=m;l+)b=(int)(pow(2,l-1)+0.5);for(j=0;j b;j+)p=j*(int)(pow(2,m-l)+0.5);for(k=j;k n;k+=(int)(pow(2,l)+0.5)rkb=cfxrk+b*rcos+cfxik+b*isin;ikb=cfxik+b*rcos-cfxrk+b*isin;cfxrk+b=cfxrk-rkb;cfxi
6、k+b=cfxik-ikb;cfxrk=cfxrk+rkb;cfxik=cfxik+ikb;delete rcos;delete isin;/实数fft/ctxr的长度为len/cfxr和cfxi的长度为2的幂/void fft:rfft_1d(double*ctxr,double*cfxr,double*cfxi,int len)int m=ceil(log(double)len)/log(2.0);int n=1 m;double*rcos=new doublen/2;double*isin=new doublen/2;for(int l=0;l n/2;l+)rcosl=cos(l*pi
7、*2/n);isinl=sin(l*pi*2/n);double*txr=new double(len+1)/2;double*txi=new double(len+1)/2;for(int i=0;i len/2;i+)txri=ctxri*2;txii=ctxri*2+1;if(len%2=1)txr(len-1)/2=ctxrlen-1;txi(len-1)/2=0;fft_1d(txr,txi,cfxr,cfxi,(len+1)/2);double*x1r=new doublen/2;double*x1i=new doublen/2;double*x2r=new doublen/2;d
8、ouble*x2i=new doublen/2;x1r0=cfxr0;x1i0=0;x2r0=cfxi0;x2i0=0;for(int k=1;k n/2;k+)x1rk=(cfxrk+cfxrn/2-k)/2.0;x1ik=(cfxik-cfxin/2-k)/2.0;x2rk=(cfxik+cfxin/2-k)/2.0;x2ik=(-cfxrk+cfxrn/2-k)/2.0;double rkb,ikb;for(i=0;i n/2;i+)rkb=x2ri*rcosi+x2ii*isini;ikb=x2ii*rcosi-x2ri*isini;cfxri+n/2=x1ri-rkb;cfxii+n
9、/2=x1ii-ikb;cfxri=x1ri+rkb;cfxii=x1ii+ikb;delete txr;delete txi;delete x1r;delete x1i;delete x2r;delete x2i;delete rcos;delete isin;/复数ifft/cfxr和cfxi的长度为n(2的幂)/ctxr和ctxi的长度为len/void fft:ifft_1d(double*cfxr,double*cfxi,double*ctxr,double*ctxi,int len)int m=ceil(log(double)len)/log(2.0);int n=1 m;doub
10、le*txr=new doublen;double*txi=new doublen;for(int i=0;i n;i+)cfxii=-cfxii;fft_1d(cfxr,cfxi,txr,txi,n);for(i=0;i len;i+)ctxri=txri/n;ctxii=-txii/n;delete txr;delete txi;/实数ifft/cfxr和cfxi的长度为n(2的幂)/ctxr的长度为len/void fft:rifft_1d(double*cfxr,double*cfxi,double*ctxr,int len)int m=ceil(log(double)len)/log
11、(2.0);int n=1 m;double*txr=new doublen;double*txi=new doublen;for(int i=0;i n;i+)cfxii=-cfxii;fft_1d(cfxr,cfxi,txr,txi,n);for(int i=0;i len;i+)ctxri=txri/n;delete txr;delete txi;fft:fft(void)3.test.cpp#include iostream#includefft.husing namespace std;void main()double xr10=1,2,3,4,5,6,7,8,9,10;/实部double xi10=0,0,0,0,0,0,0,0,0,0;/虚部double*cxr,*cxi;cxr=new double16;cxi=new double16;fft f;f.rfft_1d(xr,cxr,cxi,10);for(int i=0;i 16;i+)cout cxri+jc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冲压安全管理制度规定
- 2024年福建客运资格证模拟考试题库下载电子版
- 2024年陕西旅客运输从业资格证考试题库
- 吉首大学《化工环境保护概论》2021-2022学年第一学期期末试卷
- 《机床夹具设计》试卷1
- 吉林艺术学院《流行音乐演唱录音实践Ⅲ》2021-2022学年第一学期期末试卷
- 2024年供应协议书模板合同模板下载
- 吉林师范大学《篆书理论与技法I》2021-2022学年第一学期期末试卷
- 2024年大学助研聘用合同范本
- 2024年大水面出租转让合同范本
- 湖北省武汉市青山区2023-2024学年部编版七年级历史上学期期中试题
- 政府与企业屋顶太阳能光伏合作开发框架协议
- 阿里巴巴福利分析课件
- 做负责任的人
- 【道德与法治】云南省保山市腾冲市2023-2024学年九年级上学期期末试题
- 电影八佰观后感
- 湖北省武汉市东湖高新区2021-2022学年九年级上学期期中考试化学试题
- 出口托运单据课件
- 化学品作业场所安全警示标志双氧水
- 口腔科诊疗技术操作规范2023版
- 环境法全套课件
评论
0/150
提交评论