2016年11月15日火曜日

Octaveレッスン(9) - FIRフィルタについて復習

*FIRフィルタについて復習

昔、FIRフィルタについて、お勉強したハズなのだが、すっかり忘れてしまったので、参考書籍をもろもろ読み直して復習した。

ここに要点を記載しておく(また忘れないように)。

まずは、f(t)のフーリエ変換、逆フーリエ変換の式をおさらい:
  F(ω)=∫f(t)e^(-jωt) dt  …(1)
  f(t)=1/2π∫F(ω)e^(jωt)dt  …(2)
上記2式は下式のように略記されることが多い:
  F(ω)=F{f(t)}
  f(t)=F^-1{F(ω)}
線形システムにおいて、インパルス応答h(t)のフーリエ変換をH(ω)とすると、下式が成り立つ:
 f(t)*h(t)=1/2π∫F(ω)H(ω)e^(jωt)dt
時間領域の畳み込み演算(*)だが、周波数領域では単なる積の演算になっている。

なお、線形システムとは、入力信号が足し算で表されるなら出力信号もその足し算で表され、入力が定数倍になれば、出力も定数倍になるような系のこと。

ローパスフィルタ(周波数ωc以下の低域を通し、それより上の周波数は遮断)は、下図の左上のような方形窓H(ω)を周波数領域でF(ω)と乗算することを意味する。

方形窓H(ω)を逆フーリエ変換したh(t)を求めて、時間領域にて、h(t)と入力信号f(t)の畳み込み演算を行うと、ローパスフィルタのかかった出力信号が得られることになる。

方形窓の逆フーリエ変換を計算するとsinc関数になる:
 h(t)=1/πt sin(ωt)
実用の場では、離散フーリエ変換を使用するので、下図の右上のような離散的なsinc関数になる。

sinc関数は無限に続く関数なので、このままでは使えない(有限時間で計算できない)。
そのため、1/πt sin(ωn) のnをどこかで打ち切ってフィルタ係数として使用する(下図の中央右)。


『はじめて学ぶディジナル・フィルタと高速フーリエ変換』(CQ出版)p.93 図6-1

有限範囲で係数を打ち切ると、上図の中央左のように、通過域・阻止域にうねり(リップル)が生じてしまう(ギブス現象)。
フィルタ係数の打ち切りは、時間領域で矩形窓をかけていることを意味する。
リップルを和らげるために、時間領域でなだらかな窓関数(ハミング窓など)と係数を乗算する(上図の右下)

得られたフィルタ係数の周波数特性を求め(上図の左下)、所望の特性が得られていることを確認する。

以上でFIRフィルタについての復習はおしまい

ついでにフーリエ変換の対称性についても復習しておく。

(1), (2)を見比べると、2式には類似性がある。
(2)において、tを-ω, ωをtと置き換えると、
 2πf(-ω)=∫F(t)e^(-jωt)dt
              = F{F(t)}            
つまり、フーリエ変換の対称性を示す下式が得られた:
  F{F(t)} = 2πf(-ω)
フーリエ変換の対称性が役立つのは、f(t)のフーリエ変換F(ω)が判明しているが、F(ω)のωをtに入れ替えた関数F(t)のフーリエ変換が簡単に求まらない場合。

F(t)のフーリエ変換は、対称性からf(t)のtを-ωに入れ替えたf(-ω)に2πを乗じた関数になる。

例えば、方形窓r(t)
r(t) = 1(-1<t<1), 0(t<-1 or 1<t)
のフーリエ変換R(ω)を求めると
R(ω) =∫1*e^(-jωt)dt = 2 sin(ω)/ω
これを踏まえると、関数f(t):
f(t) = sin(ω)/ω
のフーリエ変換を求めることができる。
f(t)=R(t)/2なので、フーリエ変換の対称性より、
F(ω) = 2πr(-ω)/2 = πr(-ω)
と簡単に求まる。

0 件のコメント:

コメントを投稿