アナログフィルタ
概略
- ● ローパスフィルタ(LPF)
- カットオフ周波数以下の周波数のみ通すフィルタです
- カットオフ周波数=100Hz
- ● ハイパスフィルタ(HPF)
- カットオフ周波数以上の周波数のみ通すフィルタです
- カットオフ周波数=100Hz
- ● バンドパスフィルタ(BPF)
- カットオフ周波数を中心に帯域幅分の周波数のみ通すフィルタです
- カットオフ周波数=30Hz, 帯域幅=1 (1オクターブ)
- 1オクターブとは30Hzの場合 30/2 ~ 30×2の周波数なので、15Hz~60Hzになります
- ● ノッチフィルタ
- カットオフ周波数を中心に帯域幅分の周波数以外を通すフィルタです
- カットオフ周波数=30Hz, 帯域幅=1 (1オクターブ)
- ● ローシェルフフィルタ
- カットオフ周波数以下の周波数を増幅するフィルタです
- カットオフ周波数=100Hz, 増幅量=15dB
- ● ハイシェルフフィルタ
- カットオフ周波数以上の周波数を増幅するフィルタです
- カットオフ周波数=100Hz, 増幅量=15dB
- ● ピーキングフフィルタ
- カットオフ周波数を中心に帯域幅分の周波数を増幅するフィルタです
- カットオフ周波数=30Hz, 帯域幅=1オクターブ, 増幅量=15dB
- ● オールパスフィルタ
- カットオフ周波数周辺の位相を変えるフィルタです
- カットオフ周波数=30Hz
各フィルタは2つ前までの入力信号と2つ前までの出力信号を使って計算します(双2次フィルタ)
30Hzの波形に200Hzのノイズが乗った波形をサンプルに各フィルタをかけたときの波形を見てみます
シンボル
- 各ファンクション共通の入出力変数 入出力
- buf = 2つ前の入力と出力の記憶(変数を必ず割付けてFB外で使用しないでください) 入力
- In = 入力値
- SampFreq = サンプリング周波数
- Freq = カットオフ周波数
- BandWidth = 帯域幅
- gain = 増幅量 出力
- 計算結果
サンプリング周波数はデフォルトは実行するタスクのタスク周期で1スキャンで複数のアナログ値を取得する高速アナログユニットでは設定値に合わせてサンプリング周波数(Hz)を入力してください








使用例
ラダー
AnalogInのデータを100Hz以下の周波数のみ通すフィルタをかけてFilterAnalogに出力します
ソース
Q値はカットオフ周波数でのゲインの減少を抑える数値ですが、大きくしすぎるとカットオフ周波数付近が強調されます
1/√2あたりで調整します
参考サイト様
簡単なデジタルフィルタの実装
https://vstcpp.wpblog.jp/?page_id=523