デジタルフィルタリング

デジタルフィルターは、ウェーブフォームに含まれる周波数を強調または減衰させるために使われます。例えば、ローパスフィルターは低周波数を保持し、高周波数を遮断します。

入力ウェーブフォームにフィルターを適用すると、「応答」出力ウェーブフォームが生成されます。

Igor Pro® は有限インパルス応答(FIR)および無限インパルス応答(IIR)デジタルフィルターの設計と適用が可能です。それぞれが特定の周波数帯域を通過または遮断するフィルターを実装できますが、その数学的基盤と実装方法は大きく異なります。

Igor Pro には他の形式のデジタルフィルタリングも存在し、特に重要なのは様々な平滑化コマンドです。これにはサSavitzky-Golay、Loess、メディアン、移動平均による平滑化が含まれます。

畳み込みコマンドを直接使うこともデジタルフィルタリングを実行する別の方法ですが、後述する Filter Design and Application ダイアログを使う場合よりも高度な知識が必要です。

Igor Filter Design Laboratory(IFDL)パッケージは、デジタルフィルターの設計と適用にも使用できます。

 

有限インパルス応答フィルター

「有限インパルス応答」とは、フィルターがインパルス(または「スパイク」)に対して示す時間領域応答が、有限時間後にゼロになることを意味します。
firimpulseresponse.png

FIR フィルターには非常に有用な特性があります。全周波数において線形位相シフトを示すことが可能(そして通常はそうする)であり、これはアナログフィルターや IIR フィルターでは不可能なことです。これは入力信号の全周波数間の時間関係が乱されないことを意味し、影響を受けるのは相対的な振幅のみです。(これは特にテレビ信号処理において、色信号と輝度信号の位相を一致させるために重要です)

FIR フィルター処理された信号の入力と出力を比較する時、通常は入力または出力を時間軸上でシフトさせ、線形位相をゼロ位相に減らします(上図参照)。この処理を行うと、フィルタの出力が入力信号が到着する前に変化していることが確認できます。これは「非因果フィルタリング」と呼ばれることがあります。

Igor Pro は主に Smooth コマンドまたは FilterFIR コマンドを使う時間領域畳み込みを用いて FIR デジタルフィルタリングを実装します。

Smooth コマンドは、あらかじめ定義されたローパスフィルターを実装します。その係数は、ユーザーが指定した少数のパラメーターからアルゴリズムによって生成されます。これらのフィルターの周波数応答のグラフについては、平滑化を参照してください(フィルタリングは非因果であるため、位相応答は均一にゼロです)。

FilterFIR は、ユーザーが指定したフィルター係数を用いてデータを畳み込み処理し、あらゆる種類の FIR フィルタ(ローパス、ハイパス、バンドパスなど)を実現します。

FilterFIR で使われる FIR フィルターの係数は、Filter Design and Application ダイアログまたは Igor Filter Design Laboratory を使うのが最も容易です。

FilterFIR コマンド自体も、単純なフィルターを設計し、フィルター係数を出力することができます。

ローパスからハイパスへの変換

IFDL がなくても、信号にハイパスフィルターを適用する一つの方法は、入力信号からローパス処理した信号を差し引くことです。Igor Pro のウェーブ代入でこれを行うことができます。

もう1つのやや高速な方法は、インパルス応答からローパスフィルター係数を差し引いて得られた係数を用いて、FilterFIR 用のハイパスフィルター係数を作成することです。
lowpasstohighpass.png

ローパスフィルターの係数は、そもそもどこから得るのですか?インパルス応答を平滑化することで得られます。

以下はハイパスフィルターを実装・適用する Igor Pro コマンドです。

Make/O/N=19 impulse=0; impulse[9]=1   // Make an impulse at center (9 zeroes before, 9 after)
Duplicate/O impulse, smoothedImpulse  //   with room for smoothed response.
Smooth 5, smoothedImpulse             // Form impulse response of Smooth 5.
Duplicate/O impulse, coefs            // Storage for high-pass coefficients.
coefs= impulse - smoothedImpulse      // High-pass = Impulse - Low-pass.
FilterFIR/COEF=coefs, myData          // Apply high-pass filter.

Infinite Impulse Response Filters

IIR フィルターの応答は、インダクターとコンデンサーを用いるアナログ電子フィルターと同様に、無限に継続します。
iirimpulseresponse.png

IIR フィルターは「遅延型」であるため、実際の電子フィルターにより近いです。入力信号が到着するまで出力信号は生成されません。

IIR フィルターは、非常に少ない係数で高度な周波数特性を実現できます。欠点としては、非線形位相、有限精度演算による数値的不安定性(発振)の可能性、および間接的な設計手法(従来型アナログフィルター手法の周波数変換)が挙げられます。

Igor Pro は2つの IIR 実装を使います:

  • Direct Form I (DF I)
  • Cascaded Bi-Quad Direct Form II (DF II)

IIR 係数は3つの形式で表されます:

  • • DF I
  • • DF II
  • • Zeros and Poles form

FilterIIR コマンドには、入力ウェーブフォームとともに IIR 係数を供給し、フィルタリングされた出力ウェーブフォームを計算します。IIR 設計係数のフォーマットは、3つの形式間で異なります。

Filter Design and Application ダイアログ

Filter Design and Application ダイアログは、デジタルフィルターの設計と適用を行うためのシンプルなユーザーインターフェイスを提供します。表示するには、Analysis->Filter を選択します:
FilterDesignAndApplicationDialog_0.png

このダイアログでは、Igor Filter Design Laboratory (IFDL) フィルターのサブセットを設計できます。より簡素化されており、ほとんどの用途において十分なフィルターを提供します。

ローパス帯域、ハイパス帯域、ノッチのいずれかを任意に組み合わせて、サンプリングされたデータウェーブの周波数成分を通過または遮断できます。ローパス帯域とハイパス帯域を併用することで、バンドパスフィルターとバンドストップフィルターを作成できます。

データへの FIR フィルターの適用

設計したフィルターをウェーブフォームに適用した結果を確認するには、Apply Filter タブをクリックしてください。

入力ウェーブを Input to Filter リストボックスで選択し、Auto-update Filtered Output チェックボックス、または Update Output Now ボタンをクリックします。これにより、フィルタリング済み結果のプレビューが更新されます。
ApplyFIRFilterToData.png

Do It をクリックすると、現在のデータフォルダーに最終出力ウェーブを作成します。最終出力ウェーブの名前は Output Name フィールドで設定できます。ここでは「filteredLP」を使いました。

比較のため、フィルタリングされていない fieldRecording は以下の通りです。
UnfilteredFieldRecording.png

ダイアログのプレビューでは、フィルタリング後の出力から高周波成分が除去されていることが確認できます。filteredLP の結果の FFT により、この変化が検証されます。
FilterFFTComparison.png

参考文献

  • Terrell, Trevor J., Introduction to digital filters, Halsted Press/John Wiley & Sons, 2nd Ed 1988.

Forum

Support

Gallery

Igor Pro 10

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More