クラス flt::CIIRFilterEx

#include <flt.h>

flt::CIIRFilterExに対する継承グラフ

flt::CIIRFilter flt::CFilter すべてのメンバ一覧

説明

バイクワッドIIRフィルタクラス

CIIRFilterExは、16bit固定小数点によるIIRフィルタのクラスである。VisauDSP++の iir_fr16_ex()関数のラッパーとして働く。VisualDSP++ 4.0 ( July 2006 update )の iir_fr16_ex()関数は、転置直接型IIのバイクワッドIIRフィルタである。コンストラクタ の引数によって、何段のバイクワッド・フィルタを縦続接続するのか指定できる。

flt.h145 行で定義されています。

Public メソッド

 CIIRFilterEx (const shortfract coeff[], const short scale[], int stage, shortfract d[]=0)
 内部変数を初期化
virtual void run (const shortfract input[], shortfract output[], int count)
 フィルタ実行メソッド

Protected 変数

const short * scaleFactor
 スケールファクタへのポインタ 外部から与えられるスケールファクターの配列へのポインタを格納する。


コンストラクタとデストラクタ

flt::CIIRFilterEx::CIIRFilterEx ( const shortfract  coeff[],
const short  scale[],
int  stage,
shortfract  d[] = 0 
) [inline]

内部変数を初期化

引数:
coeff 伝達関数Hの係数列(係数配列)を与える。
stage バイクワッド・フィルタの縦続段数を与える
scale 係数の補正量を与える配列
d ディレイラインへのポインタを与える。
このコンストラクタは内部変数stateの初期化を行う。

伝達関数である係数配列とディレイラインには外部から与えられるポインタをそのまま使う。 ディレイラインを与える引数が省略された場合には、内部で割り付けて使う。

バイクワッド・フィルタの伝達関数H(z)は次のようにあらわす

H(z) = B0 + B1*z^-1 + B1*z^-2 / A0 + A1*z^-1 + A2*z^-2

ここでcoeff[]には、先頭からA02/k0,A01/k0,B02/k0,B01/k0,B00/k0, A12/k1,A11/k1,B12/k1,B11/k1,B10/k1,の順で格納する。An0は常に 1であると仮定しており、不要である。

上記の伝達関数に於いてkは係数の補正を行う係数である。バイクワッド の各段は固有の係数kを持つことができる。n段目のバイクワッドの係数 knは次の式でもとめる。 kn=2^pn。ここでpnは、引数scaleに与える n番目の値である。たとえば、scaleが { 0, 2 }であれば、2段の バイクワッドの係数補正量kは初段が0、次段が4である。

伝達関数の式およびA,Bの符号の表現方法は文献により異なる。 くれぐれも注意すること。

flt.h180 行で定義されています。

参照先 scaleFactor.

00181             : CIIRFilter( coeff, stage, d ){ scaleFactor = scale;}


関数

void flt::CIIRFilterEx::run ( const shortfract  input[],
shortfract  output[],
int  count 
) [virtual]

フィルタ実行メソッド

引数:
input shortfract型の入力配列。フィルタへの入力をここに与える。
output shortfract型の出力配列。フィルタの実行結果がここに格納される。
count input引数の要素数
iir_fr16_exのラッパーメソッドとして働く。

flt::CIIRFilterを再定義しています。

flt.cpp144 行で定義されています。

参照先 scaleFactorflt::CIIRFilter::state.

00147     {
00148         _iir_fr16_ex(           // VisualDSP++のフィルタ関数
00149                     (fract16 *)input, 
00150                     (fract16 *)output, 
00151                     count, 
00152                     &state,
00153                     scaleFactor
00154                 );
00155     }


このクラスの説明は次のファイルから生成されました:
IIR filter sample by wrapper classに対してMon Dec 18 17:29:48 2006に生成されました。  doxygen 1.5.1-p1