如何调用fftw进行Fast Fourier Transform
我们常常要看信号的振幅谱来进行分析,那傅里叶变换就必不可少。如果水平不错你可以试着自己写。当然有很多已经写好的包,非常方便,例如这里要讲到的fftw[1]。
他的用法其实人家主页说明文档讲的很清楚。我这里就记录一下怎么用之来对sac文件进行读取并计算fft。程序是用fortran写的,C的话可以参考fftw说明文档。
首先把主程序贴出来:
1 | program main |
这里sig(:,:)是个二维数组,其实用一维的就够了哈。
sacio.f90 是一个module,定义了sac文件的头,并含有sac读写程序。需要的话给我发信息,或者邮件^_^。
globe_data.f90也是一个module,定义了全局变量:
1 | module globe_data |
编译需要一个makefile:
1 | FC=gfortran |
注意这里要加上-lfftw3表示调用fftw,-I给定fftw头的路径,-L给定fftw的lib。如果是按照默认路径安装的fftw,那一般都不用指定-I和-L,因为默认路径一般已经包含在编译环境里了。
好了大功告成了,但不保证拷贝下来就能运行通过哦。有问题发邮件吧,我们再交流^_^
- 1.http://www.fftw.org/ ↩