如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
BLASBLASBLASBLASBLASBLASBLASBLASBLASLAPACKLAPACKLAPACKLAPACKFFTWFourierTransform(FT)DiscreteFourierTransform(DFT)One-dimension:Multi-dimension:DFTinMatrix-vectorFormEg:DFTin1DFisamatrixasinright:Complexity:It’sappliedinDSP(DigitalSignalProcessing):analyseandmanipulatereal-worldsignalsbycomputer–Toysandconsumerelectronics(Spectrogram)–Speechrecognition–Audio/videocompression–Medicalimaging–Communications–RadarFastFourierTransform(FFT)Cooley&Tukey,1965FFTisadivide-and-conqueralgorithmusingbinaryreversalsortEg:FFTin1DOrder:even,oddComplexity:复一维变换#include<fftw.h>…{fftw_complexin[N],out[N];//定义数据类型:复数组fftw_planp;//定义计划…//创建计划,向前变换p=fftw_create_plan(N,FFTW_FORWARD,FFTW_ESTIMATE);…//ESTIMATE表示不运行任何计算//而只是建立一个合理的计划fftw_one(p,in,out);…//一维变换的输入(出)数组fftw_destroy_plan(p);//用完后,取消计划}//在Unix上,一个使用FFTW的程序应该与-lfftw–lm相连接复多维变换#include<fftw.h>…//对于FFTW3.0以上版本则采用fftw3.h{fftw_complexin[L][M][N];//数据类型fftwnd_planp;…//fftwnd代表N维fftwp=fftwnd_create_plan(L,M,N,FFTW_FORWARD,FFTW_MEASURE|FFTW_IN_PLACE);…//在位(in-place)变换用输出数组覆盖组//MEASURE即FFTW实际执行和测量几个FFT的执行时间以发现计算规模为N的变换的最好方式;fftwnd_one(p,&in[0][0][0],NULL);…fftwnd_destroy_plan(p);}//程序编译时需与-lfftwnd–lfftw–lm相连接实一维变换#include<rfftw.h>…//专门针对实型数据的rfftw变换{//数据类型fftw_realin[N],out[N];rfftw_planp;//计划intk…//创建计划,实到复的变换,复到实则为逆变换p=rfftw_create_plan(N,FFTW_REAL_TO_COMPLEX,FFTW_ESTIMATE);…rfftw_one(p,in,out);rfftw_destroy_plan(p);}//程序编译时需与-lrfftw–lfftw–lm相连接实多维变换#include<rfftw.h>…//专门针对实型数据的rfftw变换{//数据类型fftw_realin[M,N],out[M,N];rfftw_planp;//计划intk…//创建计划,实到复的变换,复到实则为逆变换p=rfftwnd_create_plan(M,N,FFTW_REAL_TO_COMPLEX,FFTW_ESTIMATE);…rfftwnd_one(p,in,out);rfftwnd_destroy_plan(p);}//程序编译时需与-lrfftwnd–lfftw–lm相连接FFTW的多线程并行1.头文件:<fftw_threads.h>或<rfftw_theads.h>2.线程初始化:intfftw_threads_init(void);3.用到的函数fftw_threads_one(nthreads,plan,in,out);//一维复变换fftwnd_threads_one(nthreads,plan,in,out);//n维复变换rfftw_threads_one(nthreads,plan,in,out);//一维实变换rfftwnd_threads_one(nthrea