C言語なら俺に聞け! Part 101
■ このスレッドは過去ログ倉庫に格納されています
0362デフォルトの名無しさん
05/02/04 22:14:43int n=4;
double theta=3.14159265358979323846*2/n;
double ar1[]={0,0,1,2};//実数
double ar2[]={0,0,0,2};
double ar3[]={0,0,0,0};
double ai1[]={0,0,0,0};//虚数
double ai2[]={0,0,0,0};
double ai3[]={0,0,0,0};
fft(n,theta,ar1,ai1);//ar1,ai1をFFT変換
fft(n,theta,ar2,ai2);//ar2,ai2をFFT変換
for(int i=0;i<n;++i)
{
ar3[i]=ar1[i]*ar2[i]/n;
ai3[i]=ai1[i]*ai2[i]/n;
}
fft(n,-theta,ar3,ai3);//FFT逆変換
ってやるとar3が{2,1,2,1}ってなってしまう。
期待してるのは{0,0,2,4}です。
単純に繰り上がりの処理とかもなしでかまいません。
どこが間違ってるのか解説してくれる方いませんか?
お願いします。
ちなみにfftって関数は
ttp://momonga.t.u-tokyo.ac.jp/%7Eooura/fftman/ftmn1_2.html#sec1_2
からコピーしたのを使っています。
■ このスレッドは過去ログ倉庫に格納されています