gpt4 book ai didi

c - 二维复数 FFT 实现

转载 作者:太空宇宙 更新时间:2023-11-04 08:27:24 24 4
gpt4 key购买 nike

我正在使用 Dev-C++ 在 C 中工作

我创建了一个二维复数数组:

#include<complex.h>

double complex **x;

x = malloc(Nx * sizeof *X);

if (x)
{
for (i = 0; i < Nx; i++)
{
x[i] = malloc(Nx * sizeof *x[i]);

}

并用数据填充它,我用经过验证和正确的实部和虚部绘制了这些数据。

我只想对这些数据执行 FFT(希望有一个函数只接受数组、它的维度和 fft 方向),这将转换数组并能够执行逆运算。

我看过 FFTW 等库,但尽管我努力理解,但实现对我来说仍然是不可理解的。

有人可以为我解释一下执行此操作的最佳方法吗?谢谢

最佳答案

从头开始,您需要为您的系统获取 FFTW 库。根据您正在运行的代码,您可能必须从源代码制作它,如下所示:

http://www.fftw.org/fftw3_doc/Installation-and-Customization.html

配置、制作、安装过程可能需要相当长的时间。

完成后,您需要使用以下代码将库包含在您的代码中

    #include<fftw3.h>

这可能会根据您使用的版本而改变。要编译代码,您需要使用 -lfftw3 链接库。

现在实际包括 FFT 代码。这可以分为大约三个步骤:计划、填充输入数组和执行。

二维复数 FFT 的规划阶段可在此处显示:http://www.fftw.org/fftw3_doc/Complex-Multi_002dDimensional-DFTs.html#Complex-Multi_002dDimensional-DFTs您只需规划一次,除非 FFT 的维度发生变化。

第二阶段要求您使用提供的 FFTW 数组。上一个链接中显示了格式化数组的有用链接。

第三阶段就像调用“fftw_execute”例程一样简单。一旦它被调用,输出数组将填充 FFT 的输出。

关于c - 二维复数 FFT 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29855554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com