逆離散フーリエ変換
逆フーリエ変換でもとの波形を作りたいです。
http://www.geocities.jp/supermisosan/fourier.html
を参考にしました。
///参考URLの逆フーリエ変換プログラム
#include <stdio.h>
#include <math.h>
#define max 10000 //Nの最大限度数
#define pi 3.1415926535 //円周率
int main()
{
int i,k,n,N;
double Ref,Imf;
double ReF[max+1],ImF[max+1];
FILE *fourier;
FILE *inversef;
//逆フーリエ変換したいデータをあらかじめfourier.dataに保存しておく
fourier=fopen("fourier.data","r");
inversef=fopen("inversef.data","w");
//データの読み込み。
for(N=0;N<max;N++) {
if(fscanf(fourier,"%d %lf %lf",&i,&ReF[N],&ImF[N]) == EOF) {
N--;
break;
}
}
//フーリエ逆変換
for(k=0;k<N;k++) {
Ref=Imf=0.0;
for(n=0;n<N;n++) {
Ref+=(ReF[n]*cos(2*pi*k*n/N)-ImF[n]*sin(2*pi*k*n/N))/N;
Imf+=(ReF[n]*sin(2*pi*k*n/N)+ReF[n]*sin(2*pi*k*n/N))/N;
}
fprintf(inversef,"%d %f %f\n",k,Ref,Imf);
}
fclose(fourier);
fclose(inversef);
return 0;
}
//////
Refが実数部分の値で、Imfが虚数部分の値になるのですが、
どうしたら元の波形データが得られるのかがわかりません。
教えて頂けたら幸いです。