2024/08/29

適応ノッチフィルタの実装

適応ノッチフィルタの実装を読む (github.io)

適応ノッチフィルタの実装について調べました。適応ノッチフィルタはサイン波にノイズが加わった信号から、サイン波だけを消すときに使えます。ただしノイズの種類によってはうまく動かないこともあります。

今回調べた適応ノッチフィルタは内部で位相差のある 2 つの信号を作って振幅変調 (AM) をかけています。入力がサイン波であればカットオフ周波数の周りでの位相差によって AM 信号の直流成分の符号が変わります。この直流の符号の向きが入力のサイン波の周波数へと向かうようにする、というのが適応の仕組みです。直流成分の符号は位相差を φ とすると sgn(-cos(φ)) で計算できます。 sgn は符号関数です。

図は Ishibashi らによる “DSP Implementation of Adaptive Notch Filerts With Overflow Avoidance in Fixed-Point Arithmetic” で紹介されていた CPZ-ANF という名前の適応ノッチフィルタの、内部の 2 つの信号の位相差を示しています。 "Cutoff" の周りで位相差が -π/2 をまたぐので、位相差が -3π/2 を上回る範囲では適応がうまくいきます。位相差が -3π/2 を下回るような高い周波数では適応は失敗しがちです。