DFT-isa

「DFT-isa」の編集履歴(バックアップ)一覧はこちら

DFT-isa」(2007/12/04 (火) 14:33:41) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

情報工学基礎演習 波長もとめる? C言語 ソースコード -------------------------------------------------------------------------------------------------------------------- #include <stdio.h> #include <math.h> void datascan(double data[],int n); void dataprint(double data[],int m); int main(){ int i,j,n,m;/* n,n1=入力ようデータの個数 m=保存ようデータの個数*/ double n1; double data[100]; double save[50];/* 結果保存用 */ n1=n;/* 割算でnを使いたいので、doubleで定義したn1を使う。*/ printf("dataの個数を入力下さい\n"); scanf("%d",&n); m=n/2; for(i=0;i<=m;i++){ save[i]=0; } datascan(data,n); for(i=0;i<m;i++){ for(j=0;j<n;j++){ save[i]+=(sin((i+1)*j/n1 * 2 * 3.14)) * data[j]; } save[i]=save[i]/m; } dataprint(save,m); } void datascan(double data[],int n){ int i; printf("dataを入力して下さい"); for(i=0;i<n;i++)scanf("%lf",&data[i]); } void dataprint(double save[],int m){ int i; for(i=0;i<m;i++)printf("%d番 %f \n",i,save[i]); } ------------------------------------------------------------------------------------------------------------------ 使用マニュアル   煮詰まってきてわけわかんないので適当に実行しながら覚えて
情報工学基礎演習 波長もとめる? C言語 ソースコード -------------------------------------------------------------------------------------------------------------------- #include <stdio.h> #include <math.h> void datascan(double data[],int n); void dataprint(double data[],int m); void sin_kesan(double data[],double save[],int m,int n); void cos_kesan(double data[],double save[],int m,int n); void ru_ta(double save[],double save_c[],double save_r[],double save_ta[],double save_ta2[],int m); int main(){ int i,j,n,m;/* n,n1=入力ようデータの個数 m=保存ようデータの個数*/ double data[100]; double save[50],save_c[50],save_r[50],save_ta[50],save_ta2[50];/* 結果保存用 */ printf("dataの個数を入力下さい\n"); scanf("%d",&n); m=n/2; for(i=0;i<=m;i++){ save[i]=0; save_c[i]=0; save_r[i]=0; save_ta[i]=0; save_ta2[i]=0; } datascan(data,n); sin_kesan(save,data,n,m); cos_kesan(save_c,data,n,m); ru_ta(save,save_c,save_r,save_ta,save_ta2,m); printf("sinの値\n"); dataprint(save,m); printf("cosの値\n"); dataprint(save_c,m); printf("atanの値\n"); dataprint(save_ta2,m); printf("ruto\n"); dataprint(save_r,m); printf("pusai\n"); dataprint(save_ta,m); } void datascan(double data[],int n){ int i; printf("dataを入力して下さい"); for(i=0;i<n;i++)scanf("%lf",&data[i]); } void dataprint(double save[],int m){ int i; for(i=0;i<m;i++)printf("%d番 %f \n",i+1,save[i]); } void sin_kesan(double save[],double data[],int n,int m){ double n1=n,m1=m; int i,j; for(i=0;i<m;i++){ for(j=0;j<n;j++){ save[i]+=(sin((i+1)*j/n1 * 2 * M_PI)) * data[j]; } save[i]=save[i]/m1; } } void cos_kesan(double save[],double data[],int n,int m){ double n1=n,m1=m; int i,j; for(i=0;i<m;i++){ for(j=0;j<n;j++){ save[i]+=(cos((i+1)*j/n1 * 2 * M_PI)) * data[j]; } save[i]=save[i]/m1; } } void ru_ta(double save[],double save_c[],double save_r[],double save_ta[],double save_ta2[],int m){ int k; for(k=0;k<m;k++){ save_r[k]=sqrt(save[k]*save[k]+save_c[k]*save_c[k]); if(save[k]==0){ if(save_c[k]>=0){save[k]=M_PI/2;} else{save[k]=3*M_PI/2;} }else if(save[k]>0){ save_ta[k]=atan(save_c[k]/save[k]); if(save_ta[k]< 0 ){save_ta[k]=2*M_PI+save_ta[k];} }else{save_ta[k]=atan(save_c[k]/save[k])+M_PI; } save_ta2[k]=atan(save_c[k]/save[k]); } } ------------------------------------------------------------------------------------------------------------------ 使用マニュアル  まず、データの個数を入力し(おそらく12個だと思われる) 次に、グラフから求めたデータを0/12から順に入力すると、sinとの内積、など授業に必要な値が出力される

表示オプション

横に並べて表示:
変化行の前後のみ表示: