2次フィルタ

時間とともに周波数の増加する信号を5種類の2次フィルタに与え、特性を比較します。

ソースコードやプロジェクトファイルのダウンロードはこちら →biquad.zip

ブロック図
プログラム
proc 
{ 
    t = currTime();     // 現在時刻
    if t<10
    {
        wave = sin( t*t*t );            // 周波数(3*t^2)の正弦波
        Lpf = bqLpf( wave, fn, dp );    // 2次ローパスフィルタ 
        Hpf = bqHpf( wave, fn, dp );    // 2次ハイパスフィルタ 
        Bpf = bqBpf( wave, fn, dp );    // 2次バンドパスフィルタ
        Notch = bqBef( wave, fn, dp );  // 2次ノッチフィルタ 
        Apf = bqApf( wave, fn, dp );    // 2次オールパスフィルタ

        Aout( 0, 0, 1, Lpf );           // チャンネル0: Lpf を出力
        Aout( 1, 0, 1, Hpf );           // チャンネル1: Hpf を出力
        Aout( 2, 0, 1, Bpf );           // チャンネル2: Bpf を出力
        Aout( 3, 0, 1, Notch );         // チャンネル3: Notch を出力
        Aout( 4, 0, 1, Apf );           // チャンネル4: Apf を出力
    }
} 
説明 時刻を t とすると、sin(t3) は周波数 3t2 の正弦波なので、5秒後の周波数は75[rad/s]です。 これをフィルタの固有周波数 fn としました。
  • Lpf は、高周波数領域で減衰が大きく、5秒後(75ra/s)近傍で位相が90度遅れます。
  • Hpf は、低周波数領域で減衰が大きく、5秒後以前(75ra/s以下)で位相が進みます。
  • Bpf は、5秒後(75ra/s)近傍で入力と出力が同じになり、それ以外では減衰します。
  • Notch は、5秒後(75ra/s)近傍で出力がなくなります。
  • Apf は、5秒後(75ra/s)近傍で位相が逆転します。

以下の関数、信号、パラメータを使っています。

関数
(予約語)
 currTime運転開始からの時間を秒単位で返します。
 sin三角関数 sin 値を返します。
 bqLpf2次ローパスフィルタ関数です。
 bqHpf2次ハイパスフィルタ関数です。
 bqBpf2次バンドパスフィルタ関数です。
 bqBef2次ノッチフィルタ関数です。
 bqApf2次オールパスフィルタ関数です。
 Aoutアナログ出力ポートへ電圧を発生させます
信号 t運転開始からの経過時間(単位秒)です。
 wavesin(t3) という値の信号で、フィルタの入力になります。
 Lpfフィルタの出力になります。
 Hpf
 Bpf
 Notch
 Apf
パラメータ fnフィルタの固有周波数です
 dpフィルタのダンピングファクタです。

設定例
記録例
固有周波数近傍の拡大表示