DFT


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

#include<stdio.h>
#include<math.h>
#define BUN 12

void sininput(int x);
void xinput();
void out();

float s[BUN], a[BUN];

int main(){
int x;
xinput();
/*printf("倍音=")*/;scanf("%d", &x);
while(x!=0){
sininput(x);
out();
/*printf("倍音=")*/;scanf("%d", &x);
}
}

void xinput(){
int i;
for(i=0;i<BUN;i++){scanf("%f", &s[i]);}
}

void sininput(int x){
int i;
for(i=0;i<BUN;i++){a[i]=sin(x*2*3.14*i/BUN); /*printf("%f\n", a[i])*/;}
}

void out(){
int i, b; float v=0;
b=BUN/2;
for(i=0;i<BUN;i++){v=v+a[i]*s[i];
/*printf("a[%d]=%f s[%d]=%f v=%f\n", i, a[i], i, s[i], v);*/}
/*printf("%f", v); printf("/%d=", b);*/
printf("%f\n", v/b);
}