本文最后更新于:2024年1月27日 下午
C++ fftw库的使用
FFTW ( the Faster Fourier Transform in the West) 是一个快速计算离散傅里叶变换的标准C语言程序集,其由MIT的M.Frigo 和S. Johnson 开发。可计算一维或多维实和复数据以及任意规模的DFT。
fftw库的下载安装
1 2 3 4 5 6 7 8 9 10 11
| tar -xzvf fftw-3.3.8.tar.gz
./configure --prefix=/home/xxx/usr/fftw --enable-mpi --enable-openmp --enable-threads --enable-shared MPICC=mpicc CC=gcc F77=gfortran
make
make install
export LD_LIBRARY_PATH=/home/xxx/usr/fftw/lib:$LD_LIBRARY_PATH
|
fftw库的使用
头文件
进行fft
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| void fft(std::vector<std::complex<double>>& a) {
vector<Complex> temp(N);
fftw_complex* data = reinterpret_cast<fftw_complex*>(a.data());
fftw_complex* data1 = reinterpret_cast<fftw_complex*>(temp.data());
fftw_plan p = fftw_plan_dft_1d(N, data, data1, FFTW_FORWARD, FFTW_ESTIMATE);
fftw_execute(p);
a.assign(temp.begin(),temp.end());
}
|
2维同理