#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なのかが疑問です。
気になる点があればドシドシアドバイスください。