フーリエ変換を理解するまでのメモ

/


理解が難しく敬遠していたフーリエ変換だが、この機会に挑戦してみることにした。参考書は次の本。この手の本は読み手のくじける心を非常にわかっているのでおすすめ。



フーリエ変換は大学で学ぶレベルだが、高校生の数学レベルでなんとかなる。三角関数と積分、微分だけで理解できるのだ。

ここではあくまで自分的なメモとして、書籍のおさらいを残しておく。



三角関数




半径1の円を単位円とする。単位円において円周の長さが1の時の角度を、1ラジアンと表す。1円周 = 2πrの公式より、単位円における1円周は2πとなるので、ラジアンで表せば1円周 = 2π [rad]である。

sinは正弦、cosは余弦と呼ぶ。cosθはsinθがπ/2だけずれた関係にあり、直交している。直行というのはお互いを掛け合わせた関数の積分の結果がゼロになることである。

x=cosθ, y=sinθ というθを変数にした媒介変数表示で表現できる。

ピタゴラス三平方の定理 \(x^2 + y^2 = r^2\) より

$$cos^2θ + sin^2θ = 1$$


円運動をラジアンと時間で表したものを角速度と呼び、ω[rad/s]で表す。例えば単位円における1秒間に1周する円運動は、2π [rad/s]と表現されるだろう。これは1Hzと言い換えることができる。

では角速度が2倍の4π [rad/s]だったら何Hzになるだろうか?一秒間に2πの円周を2周回るということだから2Hzと言えるだろう。

これにより角速度は角周波数とも言える。


三角関数の加法定理



$$ \sin{(α+β)} = \sin{α}\cos{β} + \cos{α}\sin{β} \tag{1}$$
$$ \sin{(α-β)} = \sin{α}\cos{β} - \cos{α}\sin{β} \tag{2}$$
$$ \cos{(α+β)} = \cos{α}\cos{β} - \sin{α}\sin{β} \tag{3}$$
$$ \cos{(α-β)} = \cos{α}\cos{β} + \sin{α}\sin{β} \tag{4}$$

上の加法定理により次の積和の公式が導き出される。例えば(1)+(2)より(5)となる。

$$ \sin{α}\cos{β} = \frac{1}{2}\\{\sin{(α + β)} + \sin{(α - β)}\\} \tag{5}$$
$$ \sin{α}\sin{β} = -\frac{1}{2}\\{\cos{(α + β)} - \cos{(α - β)}\\} \tag{6}$$
$$ \cos{α}\cos{β} = \frac{1}{2}\\{\cos{(α + β)} + \cos{(α - β)}\\} \tag{7}$$

さらに
$$A = α + β \tag{8}$$
$$B = α - β \tag{9}$$

とすると次のように展開できる。

$$ α = \frac{A + B}{2} \tag{10}$$
$$ β = \frac{A - B}{2} \tag{11}$$

これらを(1)-(2)に代入することで和積の公式を導くことができる。

$$\sin{α}+\sin{β}=2\sin{\frac{α+β}{2}}\cos{\frac{α-β}{2}} \tag{12}$$
$$\sin{α}-\sin{β}=2\cos{\frac{α+β}{2}}\sin{\frac{α-β}{2}} \tag{13}$$
$$\cos{α}+\cos{β}=2\cos{\frac{α+β}{2}}\cos{\frac{α-β}{2}} \tag{14}$$
$$\cos{α}-\cos{β}=-2\sin{\frac{α+β}{2}}\sin{\frac{α-β}{2}} \tag{15}$$


三角関数の微分積分



$$(\sin{x})^{\prime} = \cos{x}\tag{16}$$
$$(\cos{x})^{\prime} = -\sin{x}\tag{17}$$
$$\int \sin{x}dx = -\cos{x}\tag{18}$$
$$\int \cos{x}dx = \sin{x}\tag{19}$$

たとえばsinxを積分してみよう。



0からπの範囲では答えが2となるが、0から2πの範囲では0となる。このことはグラフをみても理解できる。




直交する関数の積の定積分



直交とは二つの関数の積の定積分がゼロになる関数である。

たとえば次の式を計算してみる。

$$\int_{0}^{2π} \sin{x}\cos{x}dx\tag{20}$$



答えはゼロとなったのでsinxとcosxは直交していると言える。
同様に、次のような式も直交する。

$$\int_{0}^{2π} \sin{x}\sin{nx}dx\tag{21}$$

$$\int_{0}^{2π} \sin{x}\cos{nx}dx\tag{22}$$



しかし、sinxとsinxの積の定積分はゼロにはならない

$$\int_{0}^{2π} \sin^{2}{x}dx = π\tag{23}$$

これらの性質はとても便利で、のちのフーリエ変換におけるフィルタリングの役割となる。



直交する関数の合成と位相差



$$ f(x) = a {\cos x} + b {\sin x} \tag{22}$$

a=1, b=1 の時と、a=-1, b=1の時を比較してみる。



二つの関数の波形は振幅、形が全く同じだが、位相だけがずれている。aとbの値を変えることで色々な位相ずれを表現することができる。\({\sin(x + θ)}\)でも位相を変えることができるが、sinとcosの合成関数の方が都合が良い。

また、ベクトルととらえればピタゴラスの定理より、直交関数の合成の大きさrは

$$r=\sqrt{a^{2}+b^{2}}\tag{23}$$

となる。

これらにより、(22)の式は次のような周波数スペクトルグラフを書くことができる。




フーリエ級数展開



ある特定の周波数を\( f(x) = a\cos{nx} + b\sin{nx}\)で表現できるならば、どんな複雑な周波数もそれらの合成、和であると考えることができる。

$$F(x)=\frac{1}{2}a_0+a_1\cos{x}+a_2\cos{2x}+a_3\cos{3x}+ ... + a_n\cos{nx}+ ...$$
$$+b_1\sin{x}+b_2\sin{2x}+b_3\sin{3x}+ ... + b_n\sin{nx}+ ... \tag{24}$$

このことにより次のフーリエ級数展開の公式が導き出される。

$$F(x)=\frac{1}{2}a_0 + \sum_{n=1}^{\infty}(a_n{\cos nx} + b_n{\sin nx})\tag{25}$$

\( \frac{1}{2}a_0 \)  は波形全体を上下に移動させる役目を持っている。


いろいろな波形の合成



ちょっと休憩、いろいろな波形を作って遊んでみる。

Sawtooth wave


$$f(t) = \sum_{n=1}^{\infty}\frac{1}{n}{\sin nt}\tag{26}$$






Square wave


$$f(t) = \sum_{n=1}^{\infty}\frac{1}{(2n-1)}{\sin (2n-1)t }\tag{27}$$

2n-1は奇数を表す。






Triangle wave


$$f(t) = \sum_{n=1}^{\infty}{-1}^{(n+1)}\frac{1}{(2n-1)^{2}}{\sin (2n-1)t }\tag{28}$$


矩形波よりも高音へ向かう減衰率が大きいのが特徴。\({-1}^{(n+1)}\)は一つ置きに和減を変更するための表現。






フーリエ解析



元の波形(関数)からどのような周波数がどのくらいの大きさで含んでいるかを求めるのがフーリエ解析である。


周期が不明な非周期関数の場合は例えば1秒などで区切る。そして一番低い周波数から計算可能な一番高い周波数まで、全ての周波数成分を一つづつ考えていく。周波数成分を抽出するにはフィルターを使うことになるが、数学的には三角関数の直交の性質を利用してフィルタリングする。

例えばフーリエ級数の式(24)(25)から\(a_n\cos{nx}\)だけを残したい場合は、F(x)全体にcosnxを掛けて積分すれば良いことになる。nの値が等しいcosどうしやsinどうしは直交しないのだった。逆にそれ以外は直交することになるので積分するとゼロとなってしまい、結果としてcosnxが残ることになる。


ところでcosnx * cosnxの積分は、

$$\int_{0}^{2π} \cos^{2}{nx}dx = π\tag{23}$$


となる。



図のようにπを区切りにひっくり返して収めることで、横幅がπで高さが1の長方形の面積と考ることができる。式(23)は\(a_n\)が1なので、\(1 * π = π\)と解釈する。

これにより求める式である積分の式をπで割ることでフーリエ係数\(a_n, b_n\)を求めることができる。

$$a_n = \frac{1}{π}\int_{0}^{2π}F(x)\cos{nx}dx\tag{24}$$

$$b_n = \frac{1}{π}\int_{0}^{2π}F(x)\sin{nx}dx\tag{25}$$


また\(a_0\)を求めるには、F(x)のほとんどはsinやcosで出来ているのでsinやcosを積分しても0であることを利用する。

$$a_0 = \frac{1}{2π}\int_{0}^{2π}F(x)dx\tag{26}$$

最後に周波数成分を求めるにはフーリエ係数より、ピタゴラスの定理(三平方の定理)をつかって次のようになる。

$$r_n=\sqrt{a_n^{2}+b_n^{2}}\tag{23}$$

以上、フーリエ変換を使って次のようなスペクトラムは作成されている。ただし、実際にはもっと高速なFFTというアルゴリズムが使われる。




参考





https://en.wikipedia.org/wiki/Triangle_wave