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 }

Overflowに対してSat Jul 14 16:32:32 2007に生成されました。  doxygen 1.5.2