#include <flt.h>
flt::CFIRFilterに対する継承グラフ
CFirFilterは、16bit固定小数点によるFIRフィルタのクラスである。VisauDSP++の fir_fr16()関数のラッパーとして働く。
Public メソッド | |
CFIRFilter (const shortfract h[], int tap, shortfract d[]=0) | |
内部変数を初期化 | |
virtual | ~CFIRFilter () |
デストラクタ | |
virtual void | run (const shortfract input[], shortfract output[], int count) |
フィルタ実行メソッド | |
Protected 変数 | |
fir_state_fr16 | state |
内部変数 |
flt::CFIRFilter::CFIRFilter | ( | const shortfract | h[], | |
int | tap, | |||
shortfract | d[] = 0 | |||
) |
内部変数を初期化
h | 伝達関数H(係数配列)を与える。 | |
tap | フィルタのタップ数を与える | |
d | ディレイラインへのポインタを与える。 |
伝達関数である係数配列とディレイラインには外部から与えられるポインタをそのまま使う。 ディレイラインを与える引数が省略された場合には、内部で割り付けて使う。
00014 { 00015 if ( d ) { // ディレイラインが与えられたか 00016 givenDelayLine = 1; // 与えられた 00017 state.d = (fract16 *) d; // ディレイラインの設定 00018 } 00019 else{ 00020 givenDelayLine = 0; // 与えられなかった 00021 state.d = (short*)new shortfract[tap]; // ディレイラインの割付 00022 } 00023 00024 state.h = (fract16 *)h; // 伝達関数の設定 00025 state.k = tap; // タップ数の設定 00026 state.p = state.d; // 読み出しポインタの初期化 00027 state.l = 0; // 未使用 00028 00029 // ディレイラインの初期化 00030 for ( int i=0; i< tap; i++ ) 00031 state.d[i] = 0; 00032 }
flt::CFIRFilter::~CFIRFilter | ( | ) | [virtual] |
デストラクタ
コンストラクタが確保した*(state.d)の領域を開放する。
参照先 flt::CFilter::givenDelayLine・state.
00036 { 00037 if ( ! givenDelayLine ) 00038 delete[] state.d; 00039 }
void flt::CFIRFilter::run | ( | const shortfract | input[], | |
shortfract | output[], | |||
int | count | |||
) | [virtual] |
フィルタ実行メソッド
input | shortfract型の入力配列。フィルタへの入力をここに与える。 | |
output | shortfract型の出力配列。フィルタの実行結果がここに格納される。 | |
count | input引数の要素数 |
flt::CFilterを実装しています。
flt::CDecimator・flt::CInterpolatorで再定義されています。
参照先 state.
00044 { 00045 fir_fr16( // VisualDSP++のフィルタ関数 00046 (fract16 *)input, 00047 (fract16 *)output, 00048 count, 00049 &state 00050 ); 00051 }
fir_state_fr16 flt::CFIRFilter::state [protected] |
内部変数
この変数はVisualDSP++に用意されている関数、fir_fr16用の内部変数である。 構造体になっており、係数配列へのポインタ、タップ数、ディレイラインへの ポインタなどを収める。
参照元 flt::CInterpolator::run()・flt::CDecimator::run()・run()・~CFIRFilter().