我想寫一個簡單的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