- メインページ
- ネームスペース
- クラス
- ファイル

- ファイル一覧
- ファイルメンバ

# main.cpp

説明を見る。

    00001 /** \mainpage
    00002 *
    00003 * テーブル参照による三角関数生成プログラム。
    00004 * テーブルの生成はscilabの出力をそのまま使っているため、整数化
    00005 * の方法によって精度が強く影響を受ける。
    00006 *
    00007 * テーブルの生成方法を変えて出力を試験する方法については、
    00008 * osctable.cpp に説明してある。
    00009 *
    00010 * ::main() は、 osc::CTableLookup形の変数をひとつつくり、円の全周
    00011 * に相当する個数(65536個)の三角関数の値を計算してprintf()関数で出力
    00012 * する。
    00013 *
    00014 */
    00015
    00016 /** \file main.cpp
    00017  *  \brief メイン関数定義ファイル
    00018  *
    00019  * 全周を65536等分したすべての値を計算して出力する。
    00020  */
    00021 #include <stdio.h>
    00022 #include <shortfract>
    00023 #include "osc.h"
    00024
    00025 /**
    00026 * 発振器オブジェクト
    00027 *
    00028 * osci::COscillator型のオブジェクトへの参照変数。 main()関数で実体を生成する。
    00029 */
    00030 osc::COscillator * o;
    00031
    00032 /**
    00033 * I信号用バッファ
    00034 *
    00035 * 発振器が生成する信号の、I成分（余弦成分）を格納するためのバッファ。
    00036 */
    00037 shortfract isig[256];
    00038
    00039 /**
    00040 * Q信号用バッファ
    00041 *
    00042 * 発振器が生成する信号の、Q成分（正弦成分）を格納するためのバッファ。
    00043 */
    00044 shortfract qsig[256];
    00045
    00046 /**
    00047  *  \brief メイン関数定義
    00048  *
    00049  * 全周を65536等分したすべての値を計算して出力する。
    00050  */
    00051 int main(void)
    00052 {
    00053     FILE  *f;
    00054
    00055     o = new osc::CTableLookup( 0x10000 );       // 1サンプルごとに円周の1/65536ずつ進める
    00056     f = fopen( "output.txt",  "w" );
    00057
    00058     for ( int j=0; j<65536; j+=256 ){           // 256ずつ計算する
    00059         o->run( isig, qsig, 256 );              // 256点の連続するデータを計算
    00060         for ( int i=0; i<256; i++ )             // 計算したデータを出力
    00061             fprintf( f, "%d\n", isig[i].v );
    00062     }
    00063
    00064     fclose( f );
    00065 }