我看到有关于此主题的post,但没有任何回复
如何为给定图像编写执行 2D快速傅立叶变换的函数f?
对于某些整数m和n,可以假设width = 2 ^ m,height = 2 ^ n,并且输入图像已经正确填充。
输入: f - 以复数表示的2D图像
输出: F - 变换后的系数,也以复数表示
void FFT2D(Complex<double> *f, Complex<double> *F, int width, int height)
{
}
对于那些认为我希望你为我编程的人:
我不。只是想要一些关于如何运作的理论解释
答案 0 :(得分:4)
您可以使用FFTW library执行此操作:
#include <fftw.h>
void FFT2D(Complex<double> *f, Complex<double> *F, int width, int height){
fftw_plan p = fftw_plan_dft_2d(width, height, f, F, FFTW_FORWARD, FFTW_ESTIMATE);
fftw_execute(p);
fftw_destroy_plan(p);
}
答案 1 :(得分:3)
我怀疑有人会为你编写FFT实现。这是非常重要和耗时的(你也没有付出努力)。
你了解背后的数学吗?如果你理解它背后的数学,你需要看看各种FFT算法(想到Cooley Tukey)并简单地实现它们。而且,这有点像家庭作业问题。
但是既然你问过,这是由谷歌提供的DFT和FFT的C实现:http://paulbourke.net/miscellaneous/dft/
PS:你想为 me 编写A *实现吗?