FIRフィルタの設計(2) - Toyolab

15
IDFT DFT インパルス応答の打ち切り 特性の劣化=ギブス現象 FIRフィルタの設計(2) 2020年度通信工学特論(豊嶋) FIRフィルタの設計の続きです。 前回のフィルタの設計では、周波数特性にIDFTをかけてインパルス応答を求め、単 にそのインパルス応答を途中で打ち切ってフィルタの係数を求めました。 それなりに仕様に近いフィルタは作れたのですが、ちょっと気になるところがありま す。 それは、特性が波打っているところ(リプル)と、特に帯域の端のところでそのリプル が大きくなっているところです。 こういう特性の劣化のことを「ギブス現象」といいます。 これはフィルタ特有の現象というより、フーリエ級数展開のときに現れる数学的に知 られている現象です。 いずれにしろ、フィルタの特性としてはあまり好ましくないので、これを軽減する方法 をみていきます。 1

Transcript of FIRフィルタの設計(2) - Toyolab

Page 1: FIRフィルタの設計(2) - Toyolab

IDFT

DFT

インパルス応答の打ち切り

特性の劣化=ギブス現象

FIRフィルタの設計(2)

2020年度通信工学特論(豊嶋)

FIRフィルタの設計の続きです。

前回のフィルタの設計では、周波数特性にIDFTをかけてインパルス応答を求め、単にそのインパルス応答を途中で打ち切ってフィルタの係数を求めました。

それなりに仕様に近いフィルタは作れたのですが、ちょっと気になるところがあります。

それは、特性が波打っているところ(リプル)と、特に帯域の端のところでそのリプルが大きくなっているところです。

こういう特性の劣化のことを「ギブス現象」といいます。

これはフィルタ特有の現象というより、フーリエ級数展開のときに現れる数学的に知られている現象です。

いずれにしろ、フィルタの特性としてはあまり好ましくないので、これを軽減する方法をみていきます。

1

Page 2: FIRフィルタの設計(2) - Toyolab

ギブス現象の原因

方形窓

インパルス応答を突然打ち切るため不連続となる

ギブス現象の原因は、インパルス応答を単純に打ち切ったためです。

インパルス応答はだんだん小さくなっているとはいえ、波形として意味があったので、それを突然打ち切ると、その波形が不連続となってしまいます。

ギブス現象は、高い周波数まで含む波形において高い周波数成分をカットしたときに生じる波形の誤差のことを表します。

FIRフィルタの場合、時間領域の信号を打ち切ったときに周波数成分に誤差が出るので、時間と周波数を入れ替えた形でのギブス現象ということになります。

2

Page 3: FIRフィルタの設計(2) - Toyolab

窓関数によるインパルス応答の打ち切り

方形窓の代わりとなる窓関数↓

両端を小さくする

ギブス現象を軽減する方法として簡単に考えられるのは、インパルス応答を突然打ち切る代わりに、徐々に小さくしていくという方法です。

これは、インパルス応答に窓のように被せるという意味で窓関数といいます。

いきなり打ち切るのも窓関数をかけたことになりますが、この場合、矩形の形状をした方形窓をかけたことになります。

この方形窓の代わりに、両端を小さくした窓関数が色々と考案されています。

三角形だったり、三角関数を使ったりと形は似ていますが、周波数特性への影響の具合はそれぞれ異なります。

3

Page 4: FIRフィルタの設計(2) - Toyolab

バートレット窓によるインパルス応答の打ち切り

DFT

まず、一番簡単そうなバートレット窓をかけた場合です。

バートレット窓は三角形の形状となっています。

設計されたフィルタの周波数特性を見ると、確かにギブス現象は軽減されていますが、通過帯域、阻止帯域がフラットになっていない感じです。

4

Page 5: FIRフィルタの設計(2) - Toyolab

ハニング窓によるインパルス応答の打ち切り

DFT

次にハニング窓を掛けた場合です。

ハニング窓はcosの波形をそのまま使った形状です。

結果を見ると、通過帯域、阻止帯域で割とフラットになっていますが、ギブス現象はわずかに残っていることがわかります。

5

Page 6: FIRフィルタの設計(2) - Toyolab

ハミング窓によるインパルス応答の打ち切り

DFT

続いて名前は似てますが、ハミング窓をかけた場合です。

ハミング窓もcosの波形を使いますが、両端を完全に0にしないで、0.08だけわずかに残しているところが異なります。

結果もハニング窓と似ていますが、ギブス現象がわずかに改善されていることがわかります。

6

Page 7: FIRフィルタの設計(2) - Toyolab

ブラックマン窓によるインパルス応答の打ち切り

DFT

最後にブラックマン窓をかけた場合です。

ブラックマン窓は、両端は0になりますが、cosの倍角の成分も使っているので、cosだけの場合より若干急峻な形状となっています。

結果を見ると、ギブス現象はほとんど見えなくなっており、通過帯域、阻止帯域でもフラットな形状となっています。

その代わり、帯域の端がなだらかになっており、通過帯域と阻止帯域の間の遷移帯域が若干広くなっている感じです。

以上窓関数を使った設計では、窓の形状によって特性を改善できることがわかりました。

ただし、フィルタの仕様(通過帯域、阻止帯域、それぞれの帯域の許容誤差)を厳密に満たすように設計することはできません。

実際にはフィルタの仕様を厳密にコントロールして設計する方法もあり、Remez法とか、Parks-McClellanアルゴリズムとして知られています。

MatlabやPythonのライブラリにも入っているので興味のある人は試してみてください。

7

Page 8: FIRフィルタの設計(2) - Toyolab

LPFの設計

𝑀 = 10(偶数)

対称𝑀 = 11(奇数)

対称

必ず0

続いて、LPF以外の形状のフィルタの設計についてみていきます。

これまでフィルタの次数M(=フィルタの係数の数ー1)については触れませんでしたが、Mが偶数の場合と奇数の場合とで、設計可能な特性に違いがあります。

まずはLPFの場合ですが、Mが偶数でも、奇数でも設計は可能です。

Mが偶数の場合、係数の個数が奇数なので、真ん中に一つピークがあり、その左右が対称になっています。

Mが奇数の場合、係数の個数が偶数なので、真ん中のピークはなく、単に左右で対称になっています。

ただし、Mが奇数の場合、ω=πのところで、振幅が必ず0になることに注意してください。

8

Page 9: FIRフィルタの設計(2) - Toyolab

HPFの設計

𝑀 = 10(偶数)

𝑀 = 11(奇数)

対称

必ず0

HPFの設計不可

次にHPFの場合です。

Mが偶数の場合、高域を通過させるような振幅特性を与えると、ちゃんとそれに近い特性が設計できます。

しかし、Mが奇数の場合、前のスライドで説明したようにω=πのところで0となってしまい、HPFの特性が実現できません。

つまり、このままでは、Mが奇数の場合、HPFの設計は不可能ということになります。

9

Page 10: FIRフィルタの設計(2) - Toyolab

奇数次でHPFを実現するには

cosではなくsinを残す

反対称

システム関数

𝑧 = 𝑒𝑗𝜔

周波数特性

では、奇数次でHPFを実現するにはどうすればよいかですが、そのためにω=πのときの値について調べてみます。

これまで係数が対称になるケースを見てきましたが、その場合、sinが消えてcosが残る形になっていました。

Mが奇数次の場合、振幅特性にcos(ω/2)、cos(3ω/2)・・・が残るので、ω=πのときにこれが0になっていたのです。

ならば、cosをの残すのではなく、sinを残すことを考えてみます。

そのために、絶対値は同じで係数の符号が逆になる反対称にしてみます。

すると、cosが消えてsinが残ります。ただし、虚数単位のjも残ってしまうので、これを位相特性に移します。

j=e^{π/2}なので、位相特性にπ/2を加えることで、振幅特性と位相特性が分離されます。

つまり、仕様として与える位相特性を変えればよいということになります。

10

Page 11: FIRフィルタの設計(2) - Toyolab

奇数次のHPFの設計

𝑀 = 11(奇数)

反対称

必ず0

位相特性

そこで、ω=0のときにπ/2から始まるように位相特性を与えて設計してみます。

すると、係数が反対称の形となり、ちゃんとHPFの特性が実現できました。

ただし、この場合、ω=0で必ず0となるので、逆にLPFは設計できないということになります。

ということで、FIRフィルタ設計では、奇数次の場合、実現できる特性に制約があることがわかります。

11

Page 12: FIRフィルタの設計(2) - Toyolab

BPFの設計

𝑀 = 10(偶数)

対称𝑀 = 11(奇数)

対称

必ず0

次にBPFの設計をみてみます。

この場合もMが奇数のときにω=πで0になる制約がありますが、BPFの場合、その制約は特に問題ではありません。

どちらの場合もBPFの特性を実現することができます。

12

Page 13: FIRフィルタの設計(2) - Toyolab

BSFの設計

𝑀 = 10(偶数)

𝑀 = 11(奇数)

対称

〇が必ず0になるため、BSFの設計不可

最後にBSFの場合です。BSFはω=0、πで通過帯域となるため、Mが奇数の場合、ω=πで0になる制約が問題となります。

そこで、HPFのように位相特性をずらして与えることが考えられますが、その場合、こんどはω=0で0になる制約があります。

BSFはω=0とπの両方で通過帯域とならないといけないので、Mが奇数の場合は設計できないということになります。

結局、すべての特性を同じ方法で設計が可能なのは、Mが偶数の場合ということになります。

このあたりを注意して、フィルタの次数の選択を行ってください。

13

Page 14: FIRフィルタの設計(2) - Toyolab

直線位相特性の意味

周波数ごとの信号の遅れを表す一定の場合、波形歪みがない

群遅延特性

𝑀が偶数の場合、整数値↓

遅れサンプル数

最後に、Mが偶数の場合に限りますが、位相特性を与えずにFIRフィルタを設計する方法を紹介します。

そもそも直線位相特性というのは、ωで微分した群遅延特性が一定という特徴があります。

つまり、周波数に関係なく信号の遅れが一定ということになります。

この一定値M/2は、Mが偶数の場合、整数値となり、ちょうどM/2サンプルだけ遅れるということになります。

14

Page 15: FIRフィルタの設計(2) - Toyolab

位相特性を考慮しないFIRフィルタの設計

振幅特性|𝐻 𝑘 |

IDFT

シフトしたインパルス応答

位相特性𝜃 𝑘 = 0

𝑀が偶数なら対称になる

𝑀

2サンプルだけ右シフト

このようにM/2サンプルだけ遅れるということを考慮すると、位相特性は0のままでも実はフィルタの設計はできるのです。

位相特性が0の場合、インパルス応答の最初と最後に大きな値が表れていました。

ここで、そのまま最初の方だけ取り出すと、振幅特性まで劣化してしまったのですが、M/2サンプルだけ右にシフトすれば、位相特性を考慮したことになります。

インパルス応答も周期信号なので、インパルス応答を右にシフトすると、1周期の終わりの方の信号が最初の方に折り返してきます。

そして、最初のM+1個のインパスル応答を窓関数で取り出すと、ちゃんと左右対称の直線位相特性が得られるわけです。

この方法だと、最初に位相特性を与える必要がないので、最終的に設計するフィルタの次数をあらかじめ決めなくてよいというメリットがあります。

インパルス応答のシフト幅を変えることで、フィルタの次数を調整できるというわけです。

FIRフィルタの設計の説明は以上です。

15