デジタルフィルタ
概略
簡易的なデジタルフィルタを作成します

元の波形
元の波形には30Hzの正弦波に500Hzのノイズが含まれています
以下の8種類のフィルタをかけてみます

ローパスフィルタ
100Hz以上の周波数をカットオフしてノイズを除去します

ハイパスフィルタ
100Hz以下の周波数をカットオフしてノイズを除去します

バンドパスフィルタ
30Hzから1オクターブの周波数を通過させます

ノッチフィルタ
30Hzから1オクターブの周波数を除去します

ローシェルフフィルタ
100Hz以下の周波数を増幅します

ハイシェルフフィルタ
100Hz以上の周波数を増幅します

ピーキングフィルタ
30Hzから1オクターブの周波数を増幅します

オールパスフィルタ
カットオフ周波数あたりの位相を変えます
シンボル
各ファンクション共通の入出力変数
- buf
- 2つ前の入力と出力の記憶(変数を必ず割付けてFB外で使用しないでください)
- In
- 入力値
- SampFreq
- サンプリング周波数
- Freq
- カットオフ周波数
- BandWidth
- 帯域幅
- gain
- 増幅量
- Result
- 計算結果
サンプリング周波数はデフォルトは実行するタスクのタスク周期で1スキャンで複数のアナログ値を取得する高速アナログユニットでは設定値に合わせてサンプリング周波数(Hz)を入力してください
以下のグラフは30Hz+500Hzの波形をサンプリング周波数=10000Hzで収集したときにフィルタを通した時のグラフです
LPF (ローパスフィルタ)
カットオフ周波数以下を通すフィルタ

HPF (ハイパスフィルタ)
カットオフ周波数以上を通すフィルタ

BPF (バンドパスフィルタ)
カットオフ周波数から帯域幅分のみ通すフィルタ
カットオフ周波数を30Hzとして帯域幅を1オクターブとした場合は30/2から30x2の周波数になるので、15Hzから60Hzを通すことになります

NotchF (ノッチフィルタ)
カットオフ周波数から帯域幅以外を通すフィルタ
BPFとは逆に15Hzから60Hz以外を通すことになります

LowShelfF (ローシェルフフィルタ)
カットオフ周波数以下を増幅量で指定した分だけ増幅するフィルタ

HiShelfF (ハイシェルフフィルタ)
カットオフ周波数以上を増幅量で指定した分だけ増幅するフィルタ

PeekingF (ピーキングフィルタ)
カットオフ周波数を中心とした帯域幅分を増幅量で指定した分だけ増幅するフィルタ

AllPassF (オールパスフィルタ)
カットオフ周波数周辺のみの位相を変えるフィルタ

使用例
ラダー

AnalogInのデータを100Hz以下の周波数のみ通すフィルタをかけてFilterAnalogに出力します
ソース
一例としてローパスフィルタは以下のように計算しています


