クラス flt::CIIRFilter

#include <flt.h>

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

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

説明

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

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

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

Public メソッド

 CIIRFilter (const shortfract coeff[], int stage, shortfract d[]=0)
 内部変数を初期化
virtual ~CIIRFilter ()
 デストラクタ
virtual void run (const shortfract input[], shortfract output[], int count)
 フィルタ実行メソッド

Protected 変数

iir_state_fr16 state
 内部変数


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

flt::CIIRFilter::CIIRFilter ( const shortfract  coeff[],
int  stage,
shortfract  d[] = 0 
)

内部変数を初期化

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

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

バイクワッド・フィルタの伝達関数H(z)は次の形式である。

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

ここでcoeff[]には、先頭からA2,A1,B2,B1,B0の順で格納する。A0は常に 1であると仮定しており、不要である。2段のバイクワッド・フィルタの 場合には続けて二段目の係数を格納する。

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

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

00058     {
00059 
00060         
00061         if ( d ) {                     // ディレイラインが与えられたか
00062             givenDelayLine = 1;             // 与えられた
00063             state.d = (fract16 *) d;        // ディレイラインの設定
00064         }
00065         else{
00066             givenDelayLine = 0;             // 与えられなかった
00067             state.d = (short *)new shortfract[stage*2];   // ディレイラインの割付
00068         }
00069         
00070         state.c = (fract16 *)coeff;         // 伝達関数の設定
00071         state.k = stage;                // 縦続段数の設定
00072         
00073                 // ディレイラインの初期化
00074         for ( int i=0; i< stage*2; i++ )
00075             state.d[i] = 0;
00076     }

flt::CIIRFilter::~CIIRFilter (  )  [virtual]

デストラクタ

コンストラクタが確保した*(state.d)の領域を開放する。

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

参照先 flt::CFilter::givenDelayLinestate.

00080     {
00081         if ( ! givenDelayLine )
00082             delete[] state.d;
00083     }


関数

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

フィルタ実行メソッド

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

flt::CFilterを実装しています。

flt::CIIRFilterExで再定義されています。

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

参照先 state.

00088     {
00089         iir_fr16(           // VisualDSP++のフィルタ関数
00090                     (fract16 *)input, 
00091                     (fract16 *)output, 
00092                     count, 
00093                     &state 
00094                 );
00095     }


変数

iir_state_fr16 flt::CIIRFilter::state [protected]

内部変数

この変数はVisualDSP++に用意されている関数、iir_fr16用の内部変数である。 構造体になっており、係数配列へのポインタ、ステージ数、ディレイラインへの ポインタなどを収める。

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

参照元 flt::CIIRFilterEx::run()run()~CIIRFilter().


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