遅れのないフィルタ・微分処理についての整理メモ
遅れのない処理
遅れのないフィルタとしては filtfilt、
遅れのない微分としては 中央差分微分 が代表的である。
これらはいずれも、
- 未来のデータを含めて計算する
- 位相遅れが発生しない
という特徴を持つ。
モデル上では使えない点に注意
ただし、これらの手法は
Simulinkモデル上ではリアルタイム実装できないため、
基本的には 前処理(オフライン処理)専用 となる。
通常のフィルタや微分は、
- 現在値
- 過去の値
- 過去の傾き
を用いて計算するため、必ず遅れ(位相遅れ)が発生する。
あえて遅れを入れる場合
一方で、意図的に遅れを発生させたい場合も存在する。
例えば、
- ハンドルトルクをモデルに入力する場合
- 高周波成分が制御や挙動確認の邪魔になる場合
などでは、
ローパスフィルタ(LPF)やバンドパスフィルタを用いて、
信号を整形することが多い。
基本的な考え方としては、
可能であれば遅れは小さいほうが良い
ため、前処理が可能な場合は
filtfilt や中央差分微分を使用するほうが望ましいと考えている。
MATLABでのフィルタ設計
MATLABでフィルタを設計する際は、
designfilter を使用することが多い。
ローパスフィルタ(LPF)
ローパスフィルタは、
- エンジン振動
- センサー由来の高周波ノイズ
などを除去する目的で使用する。
実務上、数十Hz付近にノイズが集中するケースが多く、
それ以上の周波数成分が不要であれば、
カットオフ周波数をやや低めに設定することで、
ノイズをほぼ除去することが可能になる。
なお、カットオフ周波数付近の成分は完全には消えないため、
余裕をもった設定が必要になる点には注意したい。
バンドパスフィルタ
バンドパスフィルタは、
- 低周波側にもノイズが乗っている場合
- 特定の周波数帯のみを取り出したい場合
に有効である。
例えば、
「ある周波数帯だけを抽出したい」といったケースで使用する。
ハイパスフィルタ(HPF)
以下のような場合には、ハイパスフィルタの使用を検討する。
- 本来ゼロ付近のはずなのに、値が乗っている
- 長時間信号を確認すると、全体が斜めに傾いている(ドリフト)
ただし、HPFは十分に長い信号に対してのみ使用することを推奨する。
低いカットオフ周波数のHPFを使用した場合、
- 信号の開始直後
- 信号の終了付近
では、信頼性の低いデータ区間が発生する。
そのため、
- カットオフ周波数が低いほど
- 信号の前後で注意すべき区間が長くなる
という点に注意が必要である。