#include <stdio.h> #include <math.h> #define PI 3.14 #define MAX 64 int main (void) { double x[MAX],y[MAX],value; int i,j; double tmp_x[MAX],tmp_y[MAX]; FILE *fp,*fp2,*fp3; /* ファイル読込み */ if((fp = fopen("text01.txt","r")) == NULL){ return(-1); } if((fp2=fopen("outdate.txt","w")) == NULL){ ← 出力電圧 return(-1); } if((fp3=fopen("syuuhasu.txt","w")) == NULL){ ← 周波数 return(-1); } for(i=0; i<MAX; i++){ fscanf(fp,"%lf\n",&value); x = value; /* x :実数成分 */ y = 0; /* y :虚数成分 */ } /* データを一旦コピー */ for (i=0; i<MAX; i++) { tmp_x = x; tmp_y = y; } for (i=0; i<MAX; i++) { x = 0; y = 0; for (j=0; j<MAX; j++) { x += tmp_x[j]*cos(2*PI*i*j/MAX) + tmp_y[j]*sin(2*PI*i*j/MAX); y += -tmp_x[j]*sin(2*PI*i*j/MAX) + tmp_y[j]*cos(2*PI*i*j/MAX); } /* DFT */ for(i=0; i<MAX; i++){ fprintf(fp2,"%5.5f\n",x[i]); ← これが出力電圧なはず? } for(i=0; i<MAX; i++){ fprintf(fp3,"%5.5f\n", sqrt(x[i]*x[i]+y[i]*y[i])*2/MAX); ←これで時間を周波数にできる? } } fclose(fp); fclose(fp2); fclose(fp3); return(0); }
式は合っているはずなのですが周波数がこれでOKなのかが疑問です。
気になる点があればドシドシアドバイスください。