4-2. 時間波形と周波数スペクトル、フィルタ
ここでは、時間波形と周波数スペクトル、およびフィルタに関して
簡単に復習します。
時間波形と周波数スペクトル
フーリエ級数やフーリエ変換と呼ばれる数学的手法を用いると、任意の時間波形を、
周波数の異なる数多くの正弦波の重ね合わせとして表すことができます。例えば、

のような周期Tで繰り返す方形波r(t)に対しては
フーリエ級数展開を用いることができ、

のように、周波数が大きくなるにつれて振幅が小さくなる、無限個の正弦波の
和として表されます。この様子を確かめてみましょう。
まず、振幅1の正弦波です。

これに、振幅1/3の、3倍周波数の正弦波を足すとこうなります。

さらに、振幅1/5の、5倍周波数の正弦波を足すとこうなります。

このように、異なる大きさを持つ周波数成分を加えていくことにより、
だんだんと方形波に近付いていくことが分かると思います。完全な方形波を
再現するには無限個の和が必要になりますが、上の式に見られるように、
周波数が高くなるにつれて正弦波の大きさが小さくなっていきますので、
実用上は、適当な周波数までで打ち切っても、近似的に方形波を表す
ことができます。
このように、任意の時間波形を様々な周波数を持つ正弦波の和として表した際に、
各周波数に対する正弦波成分の大きさの分布を周波数スペクトルと呼びます。
この方形波の例のように、時間的にある周期Tで繰り返す周期関数は
フーリエ級数に展開することができ、その周波数スペクトルは、最も周波数の
低い成分(1/周期(T)となります)を基本波として、その整数倍の
飛び飛びの値(高調波と呼びます)を取ります。ただし方形波に対する周波数
スペクトルでは図のように基本波周波数の奇数倍の周波数のみが存在します。

また、方形波の場合には
周波数スペクトルはsin波の大きさの違いのみで表されますが、一般に任意の
時間波形に対しては、各周波数における正弦波は大きさと位相(正弦波が原点
からどれだけずれているかを表す)の情報を持ちます。各周波数に対する正弦波の
振幅と位相は、フーリエ級数展開を用いると厳密に計算することができます。
また、ゼロ周波数に相当する分は直流分と呼ばれ、信号の時間平均と等しく
なります。
一方、時間波形が非周期的な場合、すなわち、一定周期での繰り返しが見られない
任意形状の波形のスペクトルを求める場合には、フーリエ級数ではなく
フーリエ変換が用いられます。その場合は、周波数スペクトルは周波数軸で
連続の値を持ちます。
人間の耳で聞こえる周波数は20Hz〜20kHzです。低く感じる音は低周波、
高く感じる音は高周波に対応しています。
フィルタ
フィルタとは、ある信号における特定の性質のみを抜き出すものです。
一般的には周波数フィルタのことを指しますが、これは信号が持つ
周波数スペクトルの中で特定の周波数成分のみを抜き出すものです。
フィルタには、例えば
- 低周波数のみを抜き出す低域通過(ローパス)フィルタ
- 高周波数のみを抜き出す高域通過(ハイパス)フィルタ
- ある周波数帯域のみを抜き出す帯域通過(バンドパス)フィルタ
- ある周波数帯域のみを除去する帯域阻止(バンドストップ)フィルタ
などがあります。これらの周波数特性は、理想的には、以下のようになります。

それぞれの図において、入力をそのまま出力する周波数範囲を通過域、入力を
全く出力しない周波数範囲を阻止域と呼びます。また、通過域と阻止域の境界の
周波数を遮断(カットオフ)周波数と呼び、低域通過、高域通過型に対しては
1つずつ、帯域通過、帯域阻止型に対しては2つずつ存在します。
アナログ信号に対するフィルタは、例えば電気回路で
コイルやコンデンサを組み合わせることにより実現することができます。
離散時系列で定義されているディジタルデータに対しても、適当な処理を
行うことにより、上記のような周波数フィルタリング機能を持たせることが可能です。
このようなディジタルフィルタは、数値として表されているディジタルデータに対して
和や積などの処理を行うと実現できるため、DSPが最も得意とするところの
一つです。次(4-3)節で実際に確かめてもらいますが、前(4-1)節で見たような
波形の和や差を取る処理は、実はディジタルフィルタの一種となっています。
簡単なディジタルフィルタの構成は図のようになります。

ここで、z-1は、時刻(n)を1サンプル
周期だけ遅らせることを意味します。x(n)が現在のデータを表すとすると、
x(n-1)は1つ前のサンプル時刻のデータ、x(n-2)は2つ前のサンプル時刻の
データとなります。また
は横に書いてある
係数(a0)を信号に掛け算することを意味し、
は2つ以上の信号の足し算を行うことを
表しています。
図に示したのはFIRフィルタと呼ばれるもので、現在の信号と、過去の信号を
いくつか使って、それぞれに適当な係数をかけて足し合わせて出力を得る
ものです。どこまで過去のデータを用いるか(次数)と係数の選び方により、
低域通過、高域通過、帯域通過、帯域阻止のいずれのフィルタを実現する
ことも可能となります。一般的に、上図に示したような理想に近い周波数特性を
持つFIRフィルタを実現しようとすると、次数を大きくすることが必要に
なります。
また、この他にIIRフィルタと呼ばれるものもあります。これは、出力が
再帰的に入力に戻されて、計算されるものです。IIRフィルタは、
FIRフィルタよりも少ない次数で同じような周波数特性を持つフィルタを
実現可能ですが、不安定になりやすいという側面も持っています。
本実習では、主にFIRフィルタを中心に見ていきます。