我想写一个简单的FFTW例程(版本2),我想我刚刚得到了骨头,但我遇到了一个持久性段错误,当我打电话fftwnd_one函数(我正在做一维变换,但为了模块化,我使用了n维代码)。但是,我相信我的问题在于创造计划。任何人都可以提供一些有关此代码有什么问题的见解?如果愿意,我将不胜感激 - 谢谢!FFTW Segfault(可能简单的答案)
作为参考,我在这里使用的函数是sin(x)。我意识到并非所有的数学运算都已经实现,我只是想先让FFTW2库工作,然后才能使数据有用。
#include <stdio.h>
#include <fftw.h>
#include <math.h>
#include <complex.h>
int main(){
int i;
fftw_complex in[8];
fftwnd_plan p;
const int *n;
int temp = (int)pow(2, 2)*pow(3,2)*pow(5,1)*pow(7,1)*pow(11,1)*pow(13,0);
n = &temp;
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]);
}
return 0;
}
太棒了,谢谢!我使用fftwnd_create_plan的原因是因为这只是一种测试案例,为的是让我自己熟悉该软件。在我为这个简单的例子工作之后,我将会在图书馆进行一个更大的项目,所以我想使用n维函数,所以我会熟悉它们。现在我已经掌握了每个参数的具体含义,所以我希望能够继续下去。感谢您的帮助! – Patrick 2011-05-17 15:18:24