以前の FIR フィルタに関する記事(下記リンク)では、Hamming 窓をフィルタ係数に適用することで、サイドローブのリップルが大きく低減される様子を確認しました。今回は、なぜ Hamming 窓が、それなりに「良い窓」として広く用いられているのかを説明します。
窓関数の必要性は、しばしばスペクトルリーク(spectral leakage)の抑制という観点から説明されます。有限長に切り出した正弦波などの決定論的信号をフーリエ変換すると、周波数成分は理想的な一点に集中せず、周囲に広がって観測されます。この様子を示した例が、以下の図です。上段に描いた正弦波(1 Hz)の振動回数がきっちり整数回のとき、下に示した振幅スペクトル(フーリエ変換の絶対値)は、1 Hz の位置に立った一本の縦線となります。一方、正弦波の右端をわずかに短く切り詰めて振動回数が半端になると、スペクトルの裾が周囲に広がります。これがスペクトルリークです。

これは有限観測長による必然的な効果であり、その影響を軽減するために窓関数を用いる、という説明は数学的に正しく、感覚的にわかりやすい気がします。しかし、解析対象が確率過程である場合、この説明は必ずしも本質を突いているとは言えません。定常確率過程のパワースペクトル解析では、有限長データはそもそも確率的に変化する標本であるため、個々の周波数成分(正弦波)の強さを特定することは不可能です。周波数帯域ごとの平均的なエネルギー分布を評価できれば十分です。そのため、スペクトルリークを決定論的信号と同じ意味で問題視する必要はないというのが私の意見です。
この点は、心拍変動解析において周波数帯域ごとのパワー(LF、HF など)を評価する場合にも当てはまります。心拍変動解析では、広い周波数帯域にわたるエネルギー量が関心の対象であり、窓関数を用いなくても、適切なデータ長と平均化手法を採れば、実用上十分に安定した指標を得ることが可能です。したがって、「スペクトルリークを防ぐために窓関数が必須である」と一般化して述べるのは、確率過程や心拍変動の解析の文脈では必ずしも適切ではありません。
一方で、FIR フィルタの設計においては、窓関数は非常に重要であり、基本として理解しておくべき内容です。
理想的な周波数応答、例えば理想ローパスフィルタに対応するインパルス応答は無限長となるため、そのままでは実際の計算や実装に用いることができません。そこで、有限長の FIR フィルタを構成するためには、この無限長のインパルス応答を有限の区間に制限する必要があります。
このとき、単純に切り詰める、すなわち 矩形窓 を用いると、時間領域では急激な打ち切りが生じます。その結果、周波数領域では大きなサイドローブが現れ、通過帯域や阻止帯域に顕著なリップルが発生します。窓関数は、この切り詰め操作を滑らかに行うための手段であり、サイドローブの大きさを制御しながら、フィルタの周波数特性を実用的な形に整える役割を果たします。言い換えると、窓関数は FIR フィルタの性能を決める重要な設計パラメータです。
今回は、FIR ローパスフィルタの基本を復習しながら、なぜ Hamming 窓が考案され、広く用いられるようになったのかについて、順を追って説明していきます。
0. 周波数応答の構造
まずは、周波数応答の構造の名称を押さえておきましょう。

パスバンドの右端からは、黄色で示された トランジションバンド(transition band、遷移帯域) が始まります。ここは、信号を通す領域から遮断する領域へ移行する部分であり、周波数応答が急激に変化します。トランジションバンドの幅は、フィルタの鋭さを表す重要な指標であり、狭いほど高性能ですが、その分、設計は難しくなります。
さらに高い周波数側には、赤色で示された ストップバンド(stopband、阻止帯域) があります。ここは、本来通したくない周波数成分を抑圧する領域です。理想的には振幅がゼロになりますが、実際には小さな振動が残ります。これらの振動は ストップバンドリップル(stopband ripple、阻止帯域リップル) と呼ばれ、抑圧性能を評価する指標となります。
次に、上の右側の図は、窓関数の周波数応答を 主ローブ(main lobe、主ローブ) と サイドローブ(side lobes、副ローブ) に分けて示したものです。主ローブは、パスバンドに対応する最も大きな山であり、信号の主要なエネルギーが集中する部分です。主ローブの幅は、トランジションバンドの広さと密接に関係しています。
一方、主ローブの外側に連なって現れる小さな山がサイドローブです。サイドローブは、本来抑えたい周波数成分が完全には消えずに残ったものであり、フィルタの不要な漏れを表しています。特に最初に現れる 第一サイドローブ(first sidelobe、第一副ローブ) の高さは、フィルタ性能を評価する際によく用いられます。
このように、周波数応答をパスバンド(通過帯域)、トランジションバンド(遷移帯域)、ストップバンド(阻止帯域)、さらに主ローブとサイドローブに分けて理解すると、フィルタの構造や性能上のトレードオフを整理して把握しやすくなります。用語を分けて考えることは、フィルタ設計や特性評価を理解するうえで非常に重要です。
1. FIRローパスフィルタにおける窓関数の有用性
はじめに述べたように、FIR フィルタ設計では、無限長の理想インパルス応答を有限長に制限する必要があります。ここでは、この「有限長化」がフィルタ特性にどのような影響を与えるのかを、もう少し具体的に見ていきます。
まず、理想ローパスフィルタのインパルス応答である sinc 関数を有限区間に切り出すことを考えます。最も単純な方法は、一定区間をそのまま残す矩形窓による切り詰めです。しかし、この方法では、インパルス応答が端点で突然ゼロになるため、時間領域に強い不連続性が生じます。この不連続性は、周波数領域では必ず振動として現れ、結果として高いサイドローブと大きなリップルを伴う周波数応答になります。特に阻止帯域では、本来抑えたい周波数成分が十分に減衰せず、「漏れ」として残ってしまいます。
ここで窓関数の違いが意味を持ちます。Hann 窓や Hamming 窓を用いると、インパルス応答は端点に向かって滑らかに減衰します。これは、単に見た目を整えているわけではなく、時間領域での急激な変化を抑えることで、周波数領域に現れる振動成分、すなわちサイドローブを意図的に低減していることを意味します。その結果、周波数応答のリップルは大きく抑えられ、阻止帯域における抑圧性能が大幅に改善されます。実際の設計では、サイドローブをどこまで抑えたいか、あるいは遷移帯域をどの程度の幅で許容できるかといった要件に応じて窓関数を選択します。

この形の窓関数の中で、第一サイドローブのピークを最も低く抑えることを目的として設計されたものが「Hamming 窓」です。Hamming 窓では係数を
と選び、
となります。

のとき、
において、
を変化させたときのインパルス応答(左)とその周波数応答(右)。
2. Hammingと彼の窓
Hamming 窓は、アメリカの数学者・計算機科学者である Richard Wesley Hamming(リチャード・W・ハミング, 1915–1998) によって提案された窓関数です。Hamming は、ベル研究所(Bell Telephone Laboratories)に所属し、誤り訂正符号や数値計算、デジタル信号処理の基礎に大きな貢献をした研究者として知られています。特にハミング符号(Hamming code)の提案者として有名ですが、DSP 分野にも重要な足跡を残しています。
Hamming 窓が登場した背景には、1950〜1960年代のベル研究所におけるデジタル信号処理の実用化があります。当時、有限長データに基づくスペクトル解析やデジタルフィルタ設計が急速に発展し、その過程で「サイドローブをどのように抑えるか」が実用上の重要な課題となっていました。
Hamming は、cos型の対称な窓関数の中で、第一サイドローブのピークをできるだけ低く抑えることに着目し、計算量が少なく、かつ実用的な性能を持つ窓として Hamming 窓を位置づけました。この考え方は、サイドローブ全体を平均的に下げるのではなく、「最も目立つ第一サイドローブを重点的に抑圧する」という、非常に工学的な発想に基づいています。
Hamming 窓の定式化とその性質は、Hamming 自身の著書『Digital Filters』(Prentice-Hall, 1977)において体系的に整理され、広く知られるようになりました。この書籍は、デジタルフィルタ設計に関する初期の標準的教科書の一つであり、Hamming 窓という名称もこの時期以降、定着したと考えられています。なお、Hamming 窓はしばしば、Hann 窓(von Hann 窓)と対比されますが、Hann 窓の起源は、Julius von Hann による 1903 年の気象学的研究にまで遡ります。一方で、Hamming 窓は 20 世紀中盤のデジタル信号処理という新しい工学分野の要請の中で設計された点に、歴史的な違いがあります。
このように、Hamming 窓は、Richard W. Hamming の工学的思想——すなわち「理論的に完全であることよりも、計算可能で実用的であることを重視する姿勢」——を反映した窓関数であり、今でもFIR フィルタ設計やスペクトル解析で広く用いられています。
3. Hamming窓の0.54はフィルタ長が短いと最適じゃない
Hamming 窓は、cos の 1 次式で表される窓関数の中で、第一サイドローブのピークを最も低く抑えるという基準に基づいて係数が決められた窓です(cosの次数をあげればさらに良いものを作れますが)。Hamming窓で使われる の解析的な導出は省略しますが、この設計方針により、阻止帯域における漏れを抑えやすく、FIR フィルタ設計において標準的に用いられてきました。
ただし、この Hamming 窓の係数は、フィルタ長 が十分に大きい場合に良い近似として機能するという性質を持っています。フィルタ長が長くなるほど、周波数応答は理想特性に近づき、サイドローブ構造も窓関数固有の典型的な形に従いやすくなります。そのため、第一サイドローブ抑圧という観点では、Hamming 窓は安定した性能を示します。
一方で、フィルタ長が短い場合には最適ではないことがあります。具体的に 程度では
からずれます。サイドローブの位置や高さが粗くなり、第一サイドローブのみを下げるという設計基準が、必ずしも全体の性能向上につながらなくなります。
たとえば下の図のように、 のときは、
くらいでサイドローブが最も低下します。そして、このとき注目するのは、第1サイドローブではなく、3番目のサイドローブです。

4. まとめ
今回の説明は、「Hamming 窓が常に最良である」ということを主張するものではありません。ここで伝えたかったのは、Hamming 窓を一つの具体例として用いながら、窓関数をどのような視点で理解し、どのように使い分けるべきかを考えることです。Hamming 窓は、「第一サイドローブのピークを低く抑える」という明確な設計基準に基づいて定義されており、その性質はフィルタ長が十分に長い場合によく機能します。そのため、窓関数の役割や、主ローブとサイドローブの間にあるトレードオフを理解する題材として、非常に分かりやすい例になっています。ただし、用途や条件が変われば、他の窓関数の方が適している場合も少なくありません。
例えば、Hann 窓は端点がゼロになる対称な cos 型窓であり、時間領域での滑らかさを重視したい場合に有効です。Hamming 窓ほど第一サイドローブは低くありませんが、全体として素直な特性を持ち、解析や可視化の目的では扱いやすい窓関数です。
また、Blackman 窓は cos 項をさらに高次まで含めることで、サイドローブ全体を強く抑圧するように設計されています。主ローブは広くなりますが、阻止帯域での減衰を重視する場面では有力な選択肢となります。
さらに、Kaiser 窓のように、パラメータによって主ローブ幅とサイドローブ抑圧を連続的に調整できる窓もあります。このような窓は、「どの程度の抑圧が必要か」「どこまで遷移帯域を許容できるか」といった設計要件を、数値として直接反映できる点が特徴です。
このように、窓関数にはそれぞれ異なる設計思想と特性があります。重要なのは、特定の窓を万能の解として用いることではなく、周波数応答の構造を理解したうえで、目的に応じて窓を選ぶ視点を持つことです。
※ もし記事の中で「ここ違うよ」という点や気になるところがあれば、気軽に指摘していただけると助かります。質問や「このテーマも取り上げてほしい」といったリクエストも大歓迎です。必ず対応するとは約束できませんが、できるだけ今後の記事で扱いたいと思います。それと、下のはてなブログランキングはあまり信用できる指標ではなさそうですが (私のブログを読んでいる人は、実際とても少ないです)、押してもらえるとシンプルに励みになります。気が向いたときにポチッとしていただけたら嬉しいです。