>>「真面目」でも「頭がいい人」でもお金持ちになれないたった1つの理由とは

【画像45枚あり】フーリエ変換を宇宙一わかりやすく解説してみる


こんにちは,学生エンジニアの迫佑樹(@yuki_99_s)です.

工学系の大学生なら絶対に触れるはずのフーリエ変換ですが,「イマイチなにをしているのかよくわからずに終わってしまった」という方も多いのではないでしょうか?

難しいのに加えて,教科書もちょっと不親切で,いきなり論理が飛躍したりするんですよね(僕の理解力の問題かもしれませんが)

僕がフーリエ変換について学んだ時に,以下のような疑問を抱きました.

フーリエ変換の疑問点

出来る限り難しい式変形は使わずにこれらの疑問を解決できるようにフーリエ変換についてまとめてみました!!

多少厳密性を欠いても,とりあえず理解するという目的の記事なので,これを読んだあとに教科書と付き合わせてみることをおすすめします.

それでは,いってみましょう!! 今回の記事は結構本気で書きました.

フーリエ変換の公式

今回のゴールを確認するべく,まずはフーリエ変換及びフーリエ逆変換の公式を見てみましょう.

フーリエ変換公式

一見するとすごく複雑な形をしていて,とりあえず暗記に走ってしまいたい気持ちもわかります.

数式のままだとなんか嫌になっちゃう人も多いと思うので,1回日本語で書いてみましょう.

数式の意味を日本語で表現

簡単に言ってしまうと,時間tの関数(信号)になんかかけたり積分したりって処理をすることで角周波数ωの関数に変換しているということになります.

変換のイメージ

フーリエ変換って結局何なの?

さて,フーリエ変換は「時間tの関数から角周波数ωの関数への変換」であることがわかりました.

次に出てくるのが以下の疑問です.

大学生

時間tの関数から角周波数ωの関数への変換というのはわかったけど…

結局のところ,フーリエ変換ってなにをしてるの?

例えば,こんな複雑な関数があったとします.

複雑な非周期関数

後ほど詳しく説明しますが,実はこの複雑な見た目の関数も,私達が慣れ親しんだsin関数を足し合わせることで出来ています

関数を三角関数の和で表した図

高校生くらいに,位相のずれを考えない場合,sin関数の概形を決めるためには振幅と角周波数が分かればいいというのを習いましたよね?

つまり,キーとなってくるのは「振幅と角周波数」なので,その2つを抜き出してみましょう.

振幅と各周波数を抜き出す

さらに,抜き出しただけはなく可視化してみるために,「振幅を縦軸,角周波数を横軸に取ったグラフ」を書いてみます.

角周波数と振幅を取ったグラフ

このグラフのように,分解した成分を大小でまとめたものをスペクトルというので覚えておいてください.

そして,この分解した状態を求めて成分の大小関係を求めることを,フーリエ変換というんです

イメージ的にはそこまで難しいものではないはずです.

フーリエ変換が実際の所なにをやっているかというのはすごく大切なので,一旦まとめてみましょう.

フーリエ変換の流れのまとめ図

「よくわからないものがごちゃごちゃに集まって複雑な波形になっているものを,単純なsin波の和で表して扱いやすくしよう!!」というイメージを理解してもらえたら良いと思います.

「振幅を縦軸,角周波数を横軸に取ったグラフ」を書きましたが,これは序盤で述べた通り,角周波数の関数になっていますよね.

時間と角周波数の変換するのがフーリエ変換

「複雑な関数をただのsin関数の重ね合わせに変形してしまえば,微分積分も楽だし,解析も簡単になって嬉しいよね」という感じ

※すべての周期関数がこのように分解できるわけではありませんが,とりあえずはこの理解でOKだと思います.詳しく知りたい方は教科書を読んでみてください

フーリエ級数展開

今回扱うフーリエ変換について考える前に,フーリエ級数展開について理解する必要があります.

実は,フーリエ級数展開も,フーリエ変換も概念的には同じで,違いは「元の関数が周期関数か非周期関数か」と言うだけなんです

フーリエ変換とフーリエ級数展開の違い

フーリエ変換とフーリエ級数展開は親戚関係にあるので,どちらも簡単な三角関数の和で表していくというイメージ自体は全く変わりません

繰り返しのないぐちゃぐちゃな形の非周期関数を扱うフーリエ解析より,規則正しい周期を持った周期関数を扱うフーリエ級数展開のほうが簡単なので,まずはフーリエ級数展開を見ていきましょう.

フーリエ級数展開の例

なぜ三角関数の和で表せる?

先ほど,「複雑な関数も私達が慣れ親しんだsin関数を足し合わせて出来ています」と言いました.

そして,ここからその前提をもとに話が進もうとしています.

しかし,ある疑問を抱きはしなかったでしょうか?

大学生

なんであんな複雑な関数が,単純な三角関数の和で表せるんだろうか…?

実は,今まで習った数学でも,複雑なものを簡単なものの和で組み合わせるという作業はどこかで経験したはずです

そう,その名も「ベクトル」.

ということで,ベクトルと同様の考え方を使いながら,「関数を三角関数の和で表せる理由」について考えてみたいと思います.

まずは,2次元のベクトルを直交している2つのベクトルの和で表すことを考えてみます.

ベクトルの分解の図

先程だした例では,関数を三角関数の和で表すことが出来ました.また,ベクトルも,直交している2つのベクトルの和で表すことが出来ました.

関数とベクトルの比較

ここまでくれば,三角関数って直交しているベクトル的な性質を持ってるんじゃないか…?と考えるのが自然ですね.

関数とベクトルはそっくり

実は,関数とベクトルってそっくりさんなんです.

例えば,ベクトルの和と関数の和を見てみましょう.

関数とベクトルの足し算を比較して似ていることを確認

どっちも,同じ成分同士を足しているので,同じと考えて良さそうですね.

関数とベクトルがに似たような性質をもっているということは,「関数でも内積を考えられるんじゃないか」と予想が立ちます

関数の内積もベクトルと同じように定義可能であることの説明

こちら,シグマ記号を使って表してあげると,このような感じになります.

関数に内積を定義した図

ただし,実はまだ不十分なところがあるんですね.

内積を取る時,f(x)のxの値として整数のみを取りましたが,もちろんxは整数だけではありません.

ということで,これを整数から実数値に拡張するため,今シグマ記号になっているところを積分記号に直してあげればいいわけです.

離散であるシグマを積分で書くことで連続計算をする図

このように,ベクトル的に考えてあげることによって,関数の内積を定義することが出来ました

2つの関数の内積を考えたい場合,「2つの関数を掛けて積分すれば良い」ということになります.

関数同士の内積を定義し直した図

ここで,最初の疑問に立ち返ってみましょう.

「関数が,三角関数の和で表せる」→「ベクトルも,直交しているベクトルの和で表せる」→「もしかして,三角関数って直交しているベクトルみたいな性質がある?」という話でした.

関数が直交しているの条件を確認

ここで,関数に対して内積という演算を定義したので,実際に三角関数が直交している関係にあるのかを見てみましょう.

ただ,その前に,無限大が積分の中に入っていると計算がめんどくさいので,三角関数の周期性を利用して定積分に書き直してみます.

三角関数の周期性に注目して計算を行う

ここまでくれば,積分計算が可能なはずです.積和の公式を使って変形した後,定積分を実行してみます.

三角関数の内積計算を行い直交性の確認

今回,sinxとsin2xを例にしましたが,一般化してみるとこのようになります.

三角関数の内積計算の方法を一般化してみる

そう,角周波数が異なる三角関数同士は直交しているんです

ベクトルのようにイメージは出来ませんが,内積が0となり,確かに直交していますね.

今回はsinを例にしましたが,cosも同様に直交しています.

どんな2次元ベクトルでも,直交している2つのベクトルを使って表せたのと同じように,関数も直交している三角関数たちを使って表せるということがわかっていただけたでしょうか.

フーリエ級数展開のまとめ

三角関数が直交しているベクトル的な性質を持っているため,関数が三角関数の和で表せるのは考えてみると当たり前なことなんですね.

指数を使ってシンプルに

さて,ベクトルと同様に考えることで,関数をsinやcosの和で表すことができるということを理解していただけたと思います.

先ほどはかなり羅列していましたが,シグマ記号を使って表すとこのようになりますね.

フーリエ級数展開をシグマで表記

なんかsinやらcosやらがいっぱい出てきてごちゃごちゃしているので,オイラーの公式を使ってまとめてあげましょう.

フーリエ変換の導出に必要なオイラーの公式の紹介

オイラーの公式より,sinとcosは指数関数を使ってこのように表せます.

オイラーの公式を使って三角関数を指数表現

先ほどのフーリエ級数展開した式を,指数関数の形に直してみましょう.

フーリエ級数展開した式を指数で表現

一見すると複雑さが増したような気がしますが,実は変形すると凄くシンプルな形になるんです.

とりあえず,同類項をまとめてみましょう.

計算しやすいように同類項をまとめる

ここで,ちょっとした思考の転換です.

(e^{-i\omega t})において,(\omega)を1から∞まで変化させて足し合わせるというのは,(e^{i\omega t})において,(\omega)を-∞から-1まで変化させて足し合わせることと同じなんです

違う考え方でフーリエ級数展開の式を簡単にまとめ直す

そして,(e^0)が1であることを利用して,(a_0)も,(a_0e^{i0t})と書き直すと,一気にスッキリした形に変形することが出来ます.

フーリエ級数展開をシンプルな形で表現できた図

再びフーリエ変換とは

さて,ここまで考えたところで,最初にみた「フーリエ変換とはなにか」を再確認してみましょう.

フーリエ変換とは,横軸に角周波数,縦軸に振幅をとるグラフを得ることでした.

はじめに確認したフーリエ変換の流れを確認

この,「横軸に角周波数,縦軸に振幅をとるグラフ」というのは,どういうことかを考えてみます.

実はすでにかなりいいところまで来ていて,先ほど「関数は三角関数の和で表し,さらに変形して指数関数を使って表せる」というところまで理解しました

関数を指数関数の和で表した時,その指数関数たちの係数部分が振幅を表しています.

Fourier係数が振幅を表していることの確認

ちなみに,この指数関数たちの係数のことを,フーリエ係数と呼ぶので覚えておいてください.

このフーリエ係数が振幅を表しているということは,このフーリエ係数さえ求められれば,フーリエ変換は完了したも同然なわけです.

再びベクトルへ

では,関数を指数関数の和で表した時の係数部分を求めていきたいのですが,まずはイメージしやすいベクトルで考えてみましょう.

例えば,ベクトルの場合,係数を求めるのはすごく簡単ですね.

ベクトルの分解の係数を求める方法の確認

ただ,この「係数を求める」という処理,ちゃんと計算した場合,内積を取っているんです

ちょっと内積を使ってαとβを求めてあげましょう.

内積を使って係数を求める図

このように係数を求めるには内積を使えばいいということがわかりました.

つまり,フーリエ係数も,関数の内積を使って求めることが出来るというわけです.

関数もベクトルと同じように内積を使って係数を求められるという説明

複素関数の内積って?

ちょっと複雑になってきたので,一旦整理しましょう.

フーリエ変換とは,横軸に周波数,縦軸に振幅をとったグラフを求めることでした.

そして,振幅とは,フーリエ係数のことで,フーリエ係数を求めるためには関数の内積を使えばいいということがわかりました.

フーリエ変換の指数表記の場合の流れを確認

さて,ここで先ほどのように,関数同士の内積を取ってあげたいのですが,一旦待ってください.

ベクトルのときもそうでしたが,自分自身と内積を取ると必ず正になるというのを覚えているでしょうか?

複素数がベクトルの要素に含まれている場合,ちょっとおかしなことになってしまいます.

複素数だと内積計算が出来ないという説明

そう,自分自身都の内積が負になってしまうんですね.

そこで,内積の定義を,共役な複素数で内積計算を行うと決めてあげるんです.

内積計算の定義を複素ベクトルに拡張

実数の時は,共役の複素数をとっても全く変わらないので,これで実数の内積も複素数の内積もうまく定義することが出来るんです

高校生の時ももこういうことがありましたよね.

そう,複素数の2乗を計算する時,今回と同じように共役な複素数をかけてあげたと思います.

フーリエ係数を求める

さて,無事に内積計算を複素数へ拡張できたので,本題に進みます.

(e^{i\omega t})の共役の複素数が(e^{-i\omega t})になるというのは多分大丈夫だと思いますが,一旦確認しておきましょう.

指数関数の共役な複素数を確認している図

ここで,先ほど拡張した複素数の内積の定義より,共役な複素数を取って内積計算をしてみます.

共役な複素数を使って内積計算をしてフーリエ係数を求める図

これで,無事にフーリエ係数を求めることが出来ました!!!!

このフーリエ係数は,角周波数が決まれば一意に決まる関数となっているので,添字ではなく関数として書くことも出来ますよね.

フーリエ係数を関数として扱う図

周期関数以外でも扱えるようにする

ここまで来たらあとは最後,一息.(ここの変形はかなり雑なので,詳しく知りたい方は是非教科書をどうぞ)

今導き出した式の定積分の範囲は,-πからπとなっています.

これってなぜだったでしょうか?そうです.-∞から∞まで積分するのがめんどくさかったので三角関数の周期性に注目して,-πからπにしたのでした

フーリエ級数展開からフーリエ変換を導出するための準備

つまり,周期性がない関数を扱いたい場合は,しっかり-∞から∞まで積分してあげれば良いんですね

周期性がない関数の場合を考えてフーリエ変換の公式を導出

これで,フーリエ変換の公式を導き出すことが出来ました!! 長い道のりでした.

最後に

ところどころ怪しい式変形もあったかもしれませんが,基本的な考え方はこんな感じなはずです.

出来る限り小難しい数式は使わないようにして,高校数学が分かれば理解できる程度のレベルにしておきました.

はじめはなにやらよくわからなかった公式の意味も,ベクトルと照らし合わせてイメージしながら学んでいくことでなんとなく理解できたのではないでしょうか?

フーリエ変換のまとめの図

電気回路,音響,画像処理,制御工学などいろんなところで出てくるので,学んでおいて損はないはず.お疲れ様でした!