難易度☆☆(低-中程度:三角関数についての基礎知識)
Fourier変換
皆さんこんにちは!Fourier変換楽しんでますか?
もちろん、毎日音をフーリエ変換して「うわ、この周波数の振幅デカいな」と感動する日々を送ってることでしょう^_^。
冗談は置いといて、この記事では
Fourier Transform
について、実際に体感して、難しい知識を使わずに解説していこうと思います。
必要な知識について
-
ラジアン[rad]
中心O、半径rの円周上に孤ABをとる。孤ABの長さを\(l_{AB}\)としたとき、∠AOBの大きさを\(\frac{l_{AB}}{r}\)ラジアンと定義する。
ラジアンの単位は、孤ABの単位を[m],半径rの単位を[m]とするとm/m、つまり無次元である。
-
周波数
周波数f:振動、波が単位時間(1秒)あたりに何回繰り返すか(単位はHz ヘルツ(=/s 毎秒))
円に対して用いる場合
円上を動く点が1秒間で何周回るかが周波数fである。
赤い点の周波数は0.5Hz(2秒で1回転=1/2=0.5Hz)
三角関数に対して用いる場合
1秒にf回振動するとき\(\sin (2\pi ft)\)と表される。
※角周波数との違い
角周波数ω:単位時間あたりのラジアンの変化量(単位は、ラジアンに単位が無い(無次元)ので周波数と同じ)
sin関数において、1秒でf回振動するとき\(\sin (2\pi ft)\)と表され、 この\(2\pi f\)を\(\omega \)とする。つまり
$$\omega = 2\pi f$$が成り立つ。
Fourier変換とは?
Fourier変換は、信号や関数を周波数成分に分解する数学的手法です。 「この信号は、周波数〇Hzの波がどれくらい含まれているか?」 というのを知るために用いられます。
皆さんは高校でsinやcosをやった記憶はありますか? そのsin,cosを使って波を分解してみよう! というやつです。
例えば、下のような「矩形波」と呼ばれる波を フーリエ変換してみましょう。 後程書きますが、今回使うのはフーリエ変換の一種である フーリエ級数展開です。
スライダーを動かしてみてください。 右側にスライドするほど矩形波に近づきますよね? これは、矩形波をフーリエ級数展開すると周波数が∞まで 出てくるため、足し合わせる数を多くするほど正確になるからです。
色々試してみると2つ気になる点が見つかると思います。
一つ目に、スライドの値を大きくしていっても不連続な点において飛び出るところがあり、最大のところで約9%はみ出ています。これは「ギブス現象」と呼ばれるもので、どれだけ値を大きくしても無くなることはありません。
このギブス現象が起こるのは不連続となる部分です。
そしてもう一つ、スライドの値を0と1、2と3、4と5のように偶数とそれに+1したグラフが同じになっているのに気づきましたか?
これは矩形波をフーリエ級数展開すると奇数の周波数(1Hz,3Hz,...)の大きさが0となっているためです。
そして、このグラフはsinθのみで表されています。これは下側の線と上側の線が同じ長さで、原点(今回は不連続な部分の中間とする)に対して点対称(=奇関数)であることからこのような結果になります。
Fourier変換の種類
フーリエ変換は4種類あります。 下の表をみてください。
\ | 周期 | 非周期 |
---|---|---|
連続【1】 | フーリエ級数展開(FSE) | フーリエ変換(FT) |
不連続(離散的)【1】 | 離散フーリエ変換(DFT) | 離散時間フーリエ変換(DTFT) |
これは、フーリエ変換するデータの種類を示しています。 4種類はその使う場面、関数の性質が異なります。
-
フーリエ級数展開(Fourier Series Expansion)
これだけ名前の傾向が違う。可哀想。
その名の通り、ある関数f(x)をsin,cosの級数(足し算)で表す方法。
実数verと複素数verがある。
-
フーリエ変換(Fourier Transform)
連続、非周期の関数に用いる。【1】 後述する式を見るとわかるが、 フーリエ級数展開を積分表記にして 範囲を無限にしただけ。
-
離散フーリエ変換(Discrete Fourier Transform)
皆大好き離散フーリエ変換。 今や私達の生活に欠かせないものとなっている。 名の通り離散的なデータをフーリエ変換する。 派生したものとして高速フーリエ変換(FFT)がある。
-
離散時間フーリエ変換(Discrete Time Fourier Transform)
フーリエ変換を離散的にする操作を施すと導ける。
具体例
矩形波について考えてみましょう。
この曲線はxについて不連続点以外では確定値が存在し、周期性を保つため フーリエ級数展開が適しているとわかります。
(注)【1】正確には、「不連続な点を除く任意のxにおいてf(x)の確定値が存在する(=不連続点以外で各点収束)」場合に フーリエ級数展開またはフーリエ変換が使えます。実際の式
あまり数学が得意じゃないという方は ここまで読み飛ばしてもらって 構いません!
フーリエ変換は波をsin,cosで分解する変換です。 導出などを書くと数学的になりすぎてしまうので、 「式を眺めて」みましょう。
周期をTとする。
フーリエ級数展開(FSE)
実数表記
$$f(t) = \frac{a_0}{2} + \sum_{n=1}^{\infty} \left\{ a_n \cos(\frac{2n\pi}{T}t) + b_n \sin(\frac{2n\pi}{T}t) \right\}$$ただし、
$$a_n = \frac{2}{T} \int_{-\frac{T}{2}}^{\frac{T}{2}} f(t) \cos\left(\frac{2n\pi}{T}t\right) \, dt$$ $$b_n = \frac{2}{T} \int_{-\frac{T}{2}}^{\frac{T}{2}} f(t) \sin\left(\frac{2n\pi}{T}t\right) \, dt$$複素数表記
$$f(t) = \sum_{n=-\infty}^{\infty} c_n e^{i\frac{2n\pi}{T}t}, \quad$$ただし、
$$c_n = \frac{1}{T} \int_{-\frac{T}{2}}^{\frac{T}{2}} f(t) e^{-i\frac{2n\pi}{T} t} \, dt$$フーリエ変換(FT)
$$F(\omega) = \int_{-\infty}^{\infty} f(t)\,e^{-i\omega t}\,dt$$逆変換
$$f(t) = \frac{1}{2\pi} \int_{-\infty}^{\infty} F(\omega)\,e^{i\omega t}\,d\omega$$離散フーリエ変換(DFT)
$$X[k] = \sum_{n=0}^{N-1} x[n]\,e^{-i \frac{2\pi}{N}kn}$$逆変換
$$x[n] = \frac{1}{N} \sum_{k=0}^{N-1} X[k]\,e^{i \frac{2\pi}{N}kn}$$離散時間フーリエ変換(DTFT)
$$X(\omega) = \sum_{n=-\infty}^{\infty} x[n]\,e^{-i\omega n}$$逆変換
$$x[n] = \frac{1}{2\pi} \int_{-\pi}^{\pi} X(\omega)\,e^{i\omega n}\,d\omega$$これ見て理解できる方はフーリエ変換マニアですね。
導出などは追々作る予定です。
例として、矩形波のフーリエ変換(フーリエ級数展開)は以下のようになります。
体感する
フーリエ変換は、元の関数を分解して、ある周波数での大きさを知ることが出来ます。
この性質から元の関数を、分解した周波数・大きさで表現できないか考えてみましょう。
すると円を用いれば周波数、大きさを表現できるのではないかという考えに至ります。 なぜなら、円上で動く点を周波数F[Hz]で動かし、その円の大きさをrにすれば その点の動きは周波数、大きさの情報を持つからです。
元の関数を表すためには全ての周波数を集める必要があるため、 ある周波数で動く円上の点に、そこを中心とした円を重ねて、その円上に動く点を、、、
という感じに全ての周波数での円を重ね合わせていきます。
この考えに基づいて、デモを作ってみました。下の黒いエリア上で何か一筆書きで書いてみてください。
全画面フーリエ変換の雰囲気を理解できましたか?このデモでは円を用いてフーリエ変換の結果を視覚化しました。さらに、y=f(x)と表される関数(陽関数)に対してフーリエ変換を行うことで、sinとcosでf(x)を表すこともできます。
この結果はとても有用です。その理由は、声などの全ての音は色々な周波数のsin波(cos波)が混ざったものであり、音に対してフーリエ変換を適用するとその音を構成する周波数やその大きさを得ることができます。
これによって、音声に入った雑音の振幅を小さくし、合成することで元の音声からノイズを取り除くことや特定の楽器の音を強調することができます。
他にも、画像に対して(二次元)フーリエ変換を適用することで画像をある周波数とその大きさ(振幅)に分解することができ、これは画像の保存などに使われています。
まとめ
- フーリエ変換を用いると、波を構成する周波数とその大きさに分解できる。
- 不連続な点ではギブス現象が起こる。
- フーリエ変換はデータの種類によって4つに分類される。
- 音のノイズを取り除いたり画像をデータ化できる。
いかがでしたでしょうか?
波の成分を抽出できたり、フーリエ変換は視覚的にも面白く、私が数学にハマるきっかけもフーリエ変換でした。
「好きな関数をsinとcosや円で表せる」「離散的な点を繋げれる」「ギブス現象」のように魅力的な部分 がまだまだあるので
是非、色々考察したりしてみてください!