ローパスフィルタまとめ
ローパスフィルタとは
ローパスフィルタ(Low-Pass Filter: LPF)とは高周波成分を除去し、低周波成分を通過させるフィルタのことである。[1]
LPFで遮断する周波数をカットオフ周波数
ノイズは高周波成分であることが多いため、LPFを挟むことでノイズの除去が行える。
実用上の問題
理想と現実の比較
理想のローパスフィルタではカットオフ周波数
また現実のローパスフィルタには位相遅れが発生する。
LPFを選定する際はカットオフ性能、位相遅れ、計算量などを比較すること。
組み込みプログラミングでよく使うデジタルフィルタ
プログラム上で実現するフィルタのことをデジタルフィルタという。[1]
今回は一般に知られている以下のフィルタを解説する。[2]
- 一次遅れ
- 移動平均
- 中央値
- 外れ値除去
一次遅れ
入力
出力は伝達関数と入力の積によって表せるので、これをラプラス逆変換により周波数領域から時間領域へ変換する。[3]
入力
一次遅れをデジタルフィルタで用いるため、離散時間で表現する。[4][5]
私がよく使う形式(
output += (input - output) / 2
より応答を遅くしたい場合は除数を
一次遅れの応答例
一次遅れのボード線図
移動平均
平均する数を
(カットオフ周波数の式はよくわからない)
移動平均の応答例
移動平均のボード線図
中央値
中央値を取る数を
中央値フィルタの応答例
中央値フィルタのボード線図
外れ値除去
移動平均を取る際、範囲から最大値・最小値を除去して平均を求める。
高速フーリエ変換
高速フーリエ変換(Fast Fourier Transform: FFT)を使えば指定の周波数以降の信号をカットできる。
しかし計算量が大きいためリアルタイム処理には使用しにくい。組み込み向きではないと思う。
FFTによるノイズ除去の応答例
LPFの例
図1にノイズの乗った信号とLPFを挟んだものの例を示す。
青: 信号(sin波)に正規分布するノイズを付加したもの。
橙: LPFを挟んだもの。
緑: 信号(sin波)の実値との偏差。
図1 LPFのシミュレーション[7]