我目前正在使用 FFTW2(西方最快的傅立叶变换)库,在用 Fortran 编写了一个成功的例程后,我正在转向 C。但是,当我尝试输入时,我在分配数据时遇到了一些问题要转换的数据(即 sin(x) 的值)。目前,我的代码是:
#include <stdio.h>
#include <fftw.h>
#include <math.h>
#include <complex.h>
void compute_fft(){
int i;
const int n[8];
fftw_complex in[8];
fftwnd_plan p;
in[0]->re = 0;
in[1]->re = (sqrt(2)/2);
in[2]->re = 1;
in[3]->re = (sqrt(2)/2);
in[4]->re = 0;
in[5]->re = -(sqrt(2)/2);
in[6]->re = -1;
in[7]->re = -(sqrt(2)/2);
for(i = 0; i < 8; i++){
(in[i])->im = 0;
}
p = fftwnd_create_plan(8, n, FFTW_FORWARD, FFTW_ESIMATE | FFTW_IN_PLACE);
fftwnd_one(p, &in[0], NULL);
fftwnd_destroy_plan(p);
printf("Sin\n");
for(i = 0; i < 8; i++){
printf("%d\n", n[i]);
}
}
我一直在将此http://fftw.org/fftw2_doc/链接用于文档/教程目的,目前我的错误是“a->a 的类型参数无效(具有 afftw_complexa)”,以及 'a' 字符-> 和 fftw_complex 的任一侧上方都有克拉。我使用的模式与我在 Fortran 中编写时所用的模式基本相同,而且我似乎在遵循教程,实际上只是这里的这个任务让我弄乱了语法。作为记录,我使用的编译器是 nvcc,如果它有所作为(我之前尝试过 gcc)。如果这里的任何人以前都使用过 C 语言中的 FFTW2,你能帮我纠正我的错误吗?谢谢!