fftpack库的学习

fftpack库,使用的是pffft库中下载的,不需要额外配置,只需要fftpack.h和fftpack.c两个文件即可。使用也比较简单,有实数快速傅里叶转换(同快速傅立叶变换)和复数快速傅里叶转换(同快速傅立叶变换)两种。

(1) 复数例子

//复数fftvoid cfft _ test(){ int N=16;int n float=2 * Nint n bytes=n float * sizeof(FFT pack _ real);FFT pack _ real * wrk=(FFT pack _ real *)malloc(2 * n字节15 * sizeof(FFT pack _ real));FFT pack _ real * refin=(FFT pack _ real *)malloc(Nbytes);printf('======================\ n复杂奥尔金数据:\ n’);for(int k=0;k Nfloatk=2){ refin[k]=k * 0.5f;refin[k 1]=0 * k * 0.5f;printf('%d %f %f\n 'k/2,refin[k],refin[k 1]);}cffti(N,wrk);cfftf(N,refin,wrk);printf('=====================\ nfft:\ n ');for(int I=0;我^ 2 * n;i=2)printf('%d %f %f\n 'i/2,refin[i],refin[I 1]);printf('==========================\ n ft:\ n ');cfftb(N,refin,wrk);for(int I=0;我^ 2 * n;i=2)printf('%d %f %f\n 'i/2,refin[i]/N,refin[I 1]/N);免费(wrk);免费(refin);}(2) 实数例子

//实数fftvoid rfft _ test(){ int N=16;int n float=Nint Nbytes=n float * sizeof(FFT pack _ real);FFT pack _ real * wrk=(FFT pack _ real *)malloc(2 * n字节15 * sizeof(FFT pack _ real));FFT pack _ real * refin=(FFT pack _ real *)malloc(Nbytes);FFT pack _ real * refinr=(FFT pack _ real *)malloc(2 * Nbytes);printf('====================\ n real orgin data:\ n ');for(int k=0;k Nfloatk){ refin[k]=k * 1.0f;printf('%d %f \n 'k,refin[k]);}rffti(N,wrk);rfftf(N,refin,wrk);printf('=====================\ nfft:\ n ');{ refinr[0]=refin[0];refinr[1]=0;refinr[n float 1]=0;for(int I=2;I=n floati){ refinr[I]=refin[I-1];} for(int I=n float 2;I=2 * n float-1;I){ if(I % 2)refinr[I]=-refinr[2 * n float-I 2];elserefinr[I]=refinr[2 * n float-I];} } for(int I=0;i 2 * Nfloati=2)printf('%d %f %f\n 'i/2,refinr[i],refinr[I 1]);printf('==========================\ n ft:\ n ');rfftb(N,refin,wrk);for(int I=0;我飘;i )printf('%d %f \n 'i/2,refin[I]/N);免费(wrk);免费(refin);免费(refinr);}(3) 分析

与矩阵实验室结果比对一致,运算速度还可以。

支持两倍和浮动。

使用简单。

其他教程

冬奥会励志(永不言弃的奥运精神作文)

2023-1-8 8:34:37

其他教程

nicole英文名含义(送人鲜花手有余香的含义)

2023-1-8 8:36:43

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索