知能情報学実験:信号処理
2009-05-18 (mon)|カテゴリー:|
知能情報学実験「信号処理」受講者へ
皆さんの中には昨年度のプログラミング演習1で習われた事を「サッパリ」お忘れの方もおられるでしょう.
もちろんそれは「よろしくない」事ですが.ファイル入出力については大体期末にならい,バタバタとして身につきにくい単元でもありますので,サンプルソースを提示しておきます.課題1で「ファイル出力」,課題2以降で「ファイル入力」を用います.
講義の内容については何はともあれ北野先生の講義情報ページをご覧下さい.
1.ファイル出力サンプルコード
たとえば,新しくdata.txtという名前のファイルを作って,そこ0~9という数字をはき出すプログラムを考えましょう.
#include <stdio.h> int main(){ int i=0; // ①FILEでファイルポインタを宣言する. FILE *fp; // ②fopenで"w"か"r"か"a"か開くモードを指定し,ファイルを開く. fp =fopen("data.txt","w");//"w"はwrite:書き込みの意味です. for(i=0;i<10;i++){ //③fprintfでファイルポインタ(開いたファイル)に書き込む fprintf(fp,"%d\n",i); } //④ファイルを閉じる. fclose(fp); return 0; } /* コードの実行結果 プログラムのあるフォルダに"data.txt"ができ以下の データが出力されます. 0 1 2 3 4 5 6 7 8 9 */
2.ファイル入力サンプルコード
つぎに上でつくったデータを読み込んで画面に表示するプログラムを作りましょう
#include <stdio.h> int main(){ int i=0; int a=0; // ①FILEでファイルポインタを宣言する. FILE *fp; // ②fopenで"r"と開くモードを指定し,ファイルを開く. // このときちゃんと開くファイル(例えば)"data.txt"があることを確認 fp =fopen("data.txt","r");//"r"はread書き込みの意味です. for(i=0;i<10;i++){ //③fprintfでファイルポインタ(開いたファイル)に書き込む fscanf(fp,"%d",&a);//scanfとほとんど同じ文法なので"&"を忘れない. printf("%d,",a); } //④ファイルを閉じる. fclose(fp); return 0; } /* コードの実行結果 プログラムのあるフォルダにある"data.txt"から整数aに データが読み込まれ,以下のデータがprintfによって出力されます. 0,1,2,3,4,5,6,7,8,9, */
sin, cos, フーリエ変換使用時コンパイル時の注意
コンパイル時に -lm をつける必要があります.(math(数学)ライブラリーを使うと言う意味)
たとえば
> gcc test.c -o test -lm
のようにしないとエラーがでます.