Fourier変換についてメモ

Fourier変換

Fourier変換って何?という話が出ていて、 結局話の流れには関係なかったけど、 そのうち使うかもしれないし、この機会に知識を書き下してみようと思った。

→結局、よく知らないことが分かったので、Fourier変換についてのメモと呼ぶには少し不十分っぽくなった。

写像

A,Bを集合とする。 Aの元それぞれに対して、Bの元を一つ指定する規則のことをAからBへの写像といい、

{ \displaystyle
f:A \rightarrow B
}

のように表す。 ただし、f写像の名前。 A定義域始域ドメインソースなどと、B値域終域ドメインターゲットなどと呼ぶ。

実数の集合を\mathbb{R}とする。\mathbb{R}から\mathbb{R}への写像には

{ \displaystyle
f(x) = 3x+5,
}

{ \displaystyle
g(x) = 3cosx +4sinx
}

などがある (もちろん、もっとたくさん、いくらでもある。式で書けるほうが珍しい)。 写像は、この例のようにターゲットが数の集合である場合には特に、関数と呼ばれることが多い。 (べつに数でなくても関数と呼んで構わないが、混乱の恐れがあるのでそうしないほうが良いと思う)

音は時刻の関数である

音とは、波である。 各時刻における波の変位(空気の圧力)が正確にわかれば、元の音を再現できる。 つまり、音とは、各時刻tに変位を対応させる規則のことである。 たとえば、開始からt秒後の変位が\sin(440t)であるような音は、「ラ」とか「A」と呼ばれる。 音とは、時刻の関数である。

音の重ね合わせ

音は波なので、重ね合わせが起こる。 関数として見れば、重ね合わせとは単純に元の関数たちを足し合わせるだけで、たとえば「ドミソ」の音は 関数

{ \displaystyle
\sin(261t)+\sin(329t)+\sin(391t)
}

で表せる(ちゃんと調べていないのでちょっとずつ違うかも)。 「ラ」と1オクターブ低い「ラ」と1オクターブ高い「ラ」が重なった音は

{ \displaystyle
\sin(440t)+\sin(220t)+\sin(880t)
}

で表せる。

音の判定

時刻の関数f(t)が(三角関数みたいなわかりやすい形に限らず)与えられたとき、それがどの音たちの重ね合わせかを調べる方法はあるか?

→ある。Fourier変換。

Fourier級数展開

Fourier変換について書こうと思ったが、結局Fourier級数展開について書くにとどまった。

予備知識

tの関数の集合

{ \displaystyle
\left\{ \frac{1}{\sqrt 2}, \sin(2 \pi t), \cos(2 \pi t), \sin(2\cdot 2\pi t), \cos(2\cdot 2\pi t), \cdots, \sin(2n \pi t), \cos(2n \pi t) \right\}
}

に属する2つの元f,gについて、積の積分

{ \displaystyle
\int_{0}^{1} f(t)g(t) dt
}

は、f=gの場合のみ\frac{1}{2}となり、 f\neq gの場合は0となる。

証明は、

{ \displaystyle
\sin \alpha \sin \beta = \frac{\cos(\alpha -\beta) -\cos(\alpha +\beta)}{2}
}

等の恒等式を知っていればやさしい。

有限和で書ける場合のFourier係数の計算

関数f(t)は、定数項と三角関数の組み合わせで

{ \displaystyle
f(t) = c +a_1\sin(2\pi t) +b_1\cos(2\pi t) +a_2\sin(2\cdot 2\pi t) +b_2\cos(2 \cdot 2\pi t) +\cdots +a_n\sin(2n\pi t) +b_n\cos(2n\pi t)
}

と書けるものとする。 このとき、

{ \displaystyle
c = \int_{0}^{1}f(t)dt,
}

{ \displaystyle
a_k = 2\int_{0}^{1}f(t)\sin(2\pi kt)dt,
}

{ \displaystyle
b_k = 2\int_{0}^{1}f(t)\cos(2\pi kt)dt
}

となる。 このことは、各式の右辺を計算することで簡単に確かめられる。(上に書いた予備知識を使う)

Fourier級数

{ \displaystyle
c +a_1\sin(2\pi t) +b_1\cos(2\pi t) +a_2\sin(2\cdot 2\pi t) +b_2\cos(2\cdot 2\pi t) +\cdots
}

の形の級数をFourier級数という。 a_k, b_kをFourier係数という。

重要な定理

[ 0,1 ] で定義された関数f(t)は、あまり変なものでなければ*1、Fourier級数で表せる。*2 具体的には、

{ \displaystyle
c = \int_{0}^{1}f(t)dt,
}

{ \displaystyle
a_k = 2\int_{0}^{1}f(t)\sin(2\pi kt)dt,
}

{ \displaystyle
b_k = 2\int_{0}^{1}f(t)\cos(2\pi kt)dt
}

として、

{ \displaystyle
c +a_1\sin(2\pi t) +b_1\cos(2\pi t) +a_2\sin(2\cdot 2\pi t) +b_2\cos(2\cdot 2\pi t) +\cdots
}

と書ける。*3 このことから、周期関数はFourier級数で表せることが分かる。

Fourier級数展開

上の定理のように、関数をFourier級数で表すことをFourier級数展開という。 音の話に戻れば、Fourier級数展開とは、音を一定の高さの音の重ね合わせとして表示することにあたる。

たとえば、音fをFourier級数展開して

{ \displaystyle
f(t) = 3\sin(220t) +10\sin(440t) +2\sin(880t) +(\mbox{無視できるほど小さい係数の項})
}

となったとすると、f倍音の混じった「ラ」の音を表していると解釈できる。

Fourier変換

関数fと「周波数」kから、 fにおける周波数kの成分の「強さ」を、 積分を使って計算できることがわかった。 この「ある周波数成分の強さ」を計算する操作を一般化したもの*4がFourier変換である。 必要ならちゃんと調べて書くけど、とりあえずここまで。

*1:ここで詳しく説明するつもりはないが、例えばL^{2}([0,1])の元であればよい

*2:厳密には、各点で級数が収束してfに一致するという意味ではない。この等しさの意味をきちんと説明しようとすると長くなる

*3:このことは、有限和の場合と違って明らかではない。無限級数の扱いの難しさについては、機会があればそのうち書きたい

*4:ある区間に限った関数とか周期関数でなくても計算する