DFT 예제 C Language

#include "stdafx.h"
#include "conio.h"
#include "math.h"
#include "stdlib.h"
#define PI 3.14149264348979323846

#define FS 360 //sample frequency

void DFT();

int n,i;
double j,a,b[FS],c[FS],P[FS],X[FS];

void main()
{
 FILE *fp;
 for(i=0;i<FS;i++)
 {
  P[i]=0.0;
  b[i]=0.0;
  c[i]=0.0;
 }
 for(i=0;i<FS;i++)
 {
  X[i]=i;
 }
 
 DFT();
 
 if((fp = fopen("test.txt", "w+t"))==NULL){}
 for(i=0;i<FS;i++){
     if(fprintf(fp , "%lf\n" , P[i]) !=1){}
 }
 fclose(fp);
// getch();
}

void DFT()
{
 j=PI*4/FS;
 
 for(i=0;i<FS;i++)
 {
  for(n=0;n<FS;n++)
  {
   b[i]+=X[n]*(cos(j*i*n));
   c[i]+=X[n]*(-sin(j*i*n));
  }
  P[i]=sqrt(((b[i]*b[i])+(c[i]*c[i])));
 }
}

파일로 저장한값을 엑셀의 그래프로 확인가능


1 2 3 4 5 6 7 8 9 10 다음