離散フーリエ変換(DFT)のプログラム

締切り済みの質問

離散フーリエ変換(DFT)のプログラム

タイトルの通りのレポートを出されたのですが、その問題に似たサンプルソースすら何をいっているのかわからない状態です。ひとまず、サンプルソースが何をいっているのか理解したいので、いくつか教えてください。

ソースです。質問はその後に書かせてもらいました。

#include<stdio.h>
#include<math.h>

#define N 10
#define F 0.1
#define PI 3.14151692
#define SQR(x) ((x)*(x))

void func()
{
int n;
FILE *fp;

fp=fopen("temporal.data","w");
for(n=0;n<N;n++)
fprintf(fp,"%lf\n",cos(2.0*PI*F*(double)n));
fclose(fp);
}

void get_data(double x[])
{
int n;
FILE *fp;

fp=fopen("temporal.data","r");
for(n=0;n<N;n++)
fscanf(fp,"%lf",&x[n]);
fclose(fp);
}

void dft(double x[],double X_r[],double X_i[])
{
int k,n;
for(k=0;k<N;k++){
X_r[k]=X_i[k]=0.0;
for(n=0;n<N;n++){
X_r[k]+=x[n]*cos(2.0*PI*(double)n*(double)k/(double)N);
X_i[k]-=x[n]*sin(2.0*PI*(double)n*(double)k/(double)N);
}
}

for(k=0;k<N;k++)
printf("X[%d]=%lf+j%lf\n",k,X_r[k],X_i[k]);

}

void amplitude(double X_r[],double X_i[])
{
int k;
FILE *fp;
double amp;

fp=fopen("amp.data","w");
for(k=0;k<N;k++){
amp=sqrt(SQR(X_r[k])+SQR(X_i[k]));
fprintf(fp,"%lf\n",amp);
}
fclose(fp);
}

main()
{
double x[N],X_r[N],X_i[N];

func();
get_data(x);
dft(x,X_r,X_i);
amplitude(X_r,X_i);
}

文字数の制限があるみたいなので、質問を別にさせてもらいます。

投稿日時 - 2003-01-25 22:16:55

連想キーワード:

QNo.455235

すぐに回答ほしいです

1人が「このQ&Aが役に立った」と投票しています

[  前へ  |  次へ ]

回答(1件中 1~1件目)

ANo.1

管理者より:
続きの質問があるのでそちらをご参照下さい

参考URL:http://www.okweb.ne.jp/kotaeru.php3?q=455239

投稿日時 - 2003-01-26 09:44:34

あわせてチェックしたい
  • AMP○ ...
  • forコマンドのdelimsオプションで「","」を指定したい ...
  • sqr関数で ...
PR
【回答募集中】花粉にひと言、物申す![ 詳細 ]

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら