輝き ~ 脱・三日坊主計画

要約だよ人生は

「フーリエ変換」についてお話します

新学期が始まって2週間。大学院の理工系の専門科目に次々と顔を出してきたが、シラバスを見たり、講義を実際に受けてみると、初回から前半回にかけてやたら用いられるキーワードがあることに気付く。 「フーリエ変換」である。
初回をフーリエ変換の復習回としたり、復習にはならずとも、何かの話題に付随して出てくるという講義もある。 私の研究分野との関係上、興味を持つ講義は信号解析、電磁波、音響などの分野を中心としているため、確かにフーリエ解析は切っても切れないトピックなのだが、だとしても行く先々で飽きるほどフーリエ変換の話が出てくるので、流石に脳に焼き付いてくる。
研究でも何気なく計算機上でフーリエ変換(厳密には短時間離散フーリエ変換)を利用しているが、いざ講義で学習をすると、日々当たり前のように使っているためか実は忘れていた性質とか、単に積分が手計算でできなくなっていることとかが出てくる。そういうわけで、このブログで「フーリエ変換」の基礎的な部分、特にフーリエ変換が簡潔には何をしているかについてを一度まとめてみようと思い立った。

フーリエ変換とは

とりあえず、Wikipediaを参照してみよう。

数学においてフーリエ変換フーリエへんかん、英: Fourier transform; FT)は、実変数の複素または実数値函数を別の同種の函数に写す変換である。変換後の函数はもとの函数に含まれる周波数を記述し、しばしばもとの函数の周波数領域表現 (frequency domain representation) と呼ばれる。これは、演奏中の音楽を聴いてそれをコードに書き出すというようなことと同様な思想である。実質的に、フーリエ変換函数を振動函数に分解する。

フーリエ変換 - Wikipedia

わからぬ。
いや、言いたいことは分かるがありがたみがわからないのである。「演奏中の〜」以降は分かるとしても、最初の1文を見たところで逃げたくなる人もいるだろう。とりあえず数学的な事情は置いておこう。フーリエ変換は第2,3文にあるように、要するになんらかのデータの"周波数"を取り出すツールである。データは信号でも画像でもよいが、そのデータを違う視点で見るための方法だ。
信号が音声だったら、フーリエ変換は早い話が【数学界の絶対音感持ち】といったところだろうか。音を聞くだけでその音がドなのかレなのかとかをパッと知らせてくれるような奇妙な社会に貢献してくれそうで役に立つ存在。そのような人物は身の回りにも心当たりはないだろうか?音楽をやっている人ならば、楽器の調律にチューナーを使うかもしれないが、アレもまたフーリエ変換なくしてありふれたアイテムではなかったのではないだろうか。

定義

Wikipediaにもある通り、フーリエ変換の定義はよく使われるものの中にもいくつか流儀がある。Wikipedia内の数式の定義は個人的にあまり好きではないので、改めてここでも私がいちばん使用している定義式をあげることとする。我々の直感にフィットする連続系、すなわちアナログの世界を前提としよう。解析対象は音声としよう。
音声の正体は空気の振動であるが、この空気の振動というのは時間に伴って変化する。だから、時間の変数をtとすることで、音声はx(t)という形で書ける。さて、この時のフーリエ変換の式は \begin{equation} X(f) := \int_{-\infty}^{\infty}x(t){\mathrm{e}}^{-j2\pi f t}\mathrm{d}t \end{equation} と定義される。高校数学までの範囲だと、おいおいどうして積分範囲に無限があるんだよ指数部にそんな長いものをつけるないや虚数単位はjじゃなくてiだろ、などともう訳がわからなくなる*1だろうが落ち着いてほしい。ただ全部を話していてはこの記事が長くなりすぎてしまうので、積分範囲に無限があることについては「広義積分」あたりでググってもらうものとして、虚数単位がjなのはそういう流儀もあるということで承知願いたい。Napier数の指数部が長いことは抵抗があるかもしれないが、これも大したことではない。この世界は美しい。数学には美の象徴とされている数式の一つに、オイラーの公式 \begin{equation} \mathrm{e}^{j\theta} = \cos\theta + j\sin\theta \end{equation} という遺産があるのだから。

歴史はさておき、フーリエ変換の定義式には突如fが現れている。これもまたフーリエ変換の訳分からないところと思われることだろうが、なんてことはない、これがはじめに話した「周波数」だ。 今回の主題は、この積分を用いた定義式の意味についてである。積分する関数(被積分関数という)に刮目いただきたい。音声はx(t)としたが、これに対して\mathrm{e}^{-j2\pi f t}を乗算している。何をしているかを噛み砕いて言うと、この乗算で音声x(t)と、ある周波数fをもった音の相互的な関係を測っているのである。数学的には、実はこの積分x(t)\mathrm{e}^{j2\pi f t}内積をとるという行為、 \begin{equation} \langle x, \mathrm{e}^{j2 \pi f t}\rangle \left(= X(f) \right) \end{equation} に相当する。観測する音声と周波数f_1が関係が深い成分、すなわち観測する音声に周波数f_1の成分が含まれるのであれば、フーリエ変換した結果、X(f)f=f_1において、実部もしくは虚部に値が現れる。

例題

x(t)=\sin 2\pi tとしよう。これは1\mathrm{Hz}の周波数を持つ正弦波を表す*2。詳しい計算はここでは省くが、これをフーリエ変換した式は \begin{equation} X(f) = \int_{-\infty}^{\infty}\sin 2\pi t \ {\mathrm{e}}^{-j2\pi f t}\mathrm{d}t = j\frac{\delta\left(f+1\right)-\delta\left(f-1\right)}{2} \end{equation} となる。この\delta(x)ディラックデルタ関数という超関数である。「超関数」というと難儀な響きを感じるかもしれないが、ここではxの所だけ値が無限大に突き出ていて、その他は0になっているような関数とでも思ってもらえれば十分だ。1\mathrm{Hz}の周波数を持つ正弦波を永遠に観察し続ければ、その1\mathrm{Hz}だけがずっと観測され、他の周波数は観測されないということを、この数式が意味している。
f:id:wktk037:20180422005338p:plain
音楽をやっている人なら疑問に思うかもしれないが、フーリエ変換した結果には「負の」周波数が存在する。周波数を音の高さとしてのみ捉えてきたならば、負の周波数に成分が存在しているのは妙だろう。しかし、フーリエ変換における単一の周波数を持った音の正体はオイラーの公式で展開されたように、複素数に拡張された正弦波である。このため、正の周波数成分だけをとって逆変換をすると、元の波形が実波形\sin 2\pi tであることに対して矛盾してしまう。 負の周波数を持つ正弦波は、正の周波数を持つ正弦波と逆位相に進行する正弦波、つまり音の高さで言えば同じ高さの周波数を持つ正弦波として存在していて、入力された波形は複素正弦波を合成することで虚数成分が打ち消された波形と解釈すればよい。

おわりに

今回はフーリエ変換が用いられる背景と基礎的事項について、信号解析の立場から解説を行った。説明が難しくなりがちな部分も、できるだけわかりやすく伝えたつもりだが、ここはもうちょっと詳細に説明してほしかったとか、もっと簡単な説明ができるはず、などの意見も受け付ける所存である。

*1:私も高校生の頃にフーリエ変換を知ろうとしたものの、この式のせいでいきなり挫折した

*2:なお、人間が聴きとれる音の周波数帯域は20Hzから20kHzであり、この振動を音としては聴き取ることはできない