フーリエ変換やDFTと、基底ベクトルの変換の関連を考えてみた


#この記事の概要
自分が初めてフーリエ変換について勉強した時、「フーリエ変換は任意の関数と三角関数の内積である」という説明が全然意味がわからなくて、結局理解を諦めてしまいました。
しかし最近なんとなくその意味がわかったので、初めてフーリエ変換に触れるような人の理解の一助となればとこの記事を書きました。
もしかしたら間違ってるところがあるかも知れませんので、発見次第教えて頂けるとありがたいです。

また、この記事を書くに当たって以下の本、記事をめちゃめちゃ参考にしました。
物理数学の直観的方法 (https://bookclub.kodansha.co.jp/product?item=0000194699 )
EMANの物理学（https://eman-physics.net/math/fourier01.html ）
#離散フーリエ変換の動作
N個のデータが以下のようにベクトルの形で与えられるとする。

```math
\boldsymbol{f} = 
    \begin{pmatrix}
      f_1 \\
      \vdots \\
      f_{N} \\
    \end{pmatrix}
```

この時、$\vec{f}$は基底ベクトルの組{$\vec{e}_1,\vec{e}_2,...,\vec{e}_N$}と、その係数の組{$f_1,f_2,...,f_N$}で以下のように表せる。

```math
\vec{f} = f_1\vec{e}_1+f_2\vec{e}_2+...+f_{N}\vec{e}_N
```
ただし、{$\vec{e}_1,\vec{e}_2,...,\vec{e}_N$}の定義は以下の通りである。

```math
\vec{e}_1=    
\begin{pmatrix}
      1 \\
      0 \\
\vdots \\
      0 \\
    \end{pmatrix}
,\vec{e}_2=    
\begin{pmatrix}
      0 \\
      1 \\
\vdots \\
      0 \\
    \end{pmatrix}
,...,
\vec{e}_N=    
\begin{pmatrix}
      0 \\
      0 \\
\vdots \\
      1 \\
    \end{pmatrix}
```

また、$\vec{f}$は別の(互いに直交した)基底ベクトルの組{$\vec{E}_1,\vec{E}_2,...,\vec{E}_N$}と、その係数の組{$F_1,F_2,...,F_N$}で以下のようにも表せる。

```math
\vec{f} = F_1\vec{E}_1+F_2\vec{E}_2+...+F_{N}\vec{E}_N
```

ただし、$\vec{E}_i$の定義は以下の通りである。

```math
\vec{E}_i = \frac{1}{\sqrt{N}}
\begin{pmatrix}
      (e^{i2\pi\frac{0}{N}})^{i-1} \\
      (e^{i2\pi\frac{1}{N}})^{i-1}  \\
\vdots \\
      (e^{i2\pi\frac{N-1}{N}})^{i-1} \\
    \end{pmatrix}
```

この時、{$\vec{E}_1,\vec{E}_2,...,\vec{E}_N$}は以下のような性質を満たす。
$i\neq j$とし、

```math
\vec{E}_i \cdot \vec{E}_i^*= 1,　
\vec{E}_i \cdot \vec{E}_j^*= 0
```

#具体例(N = 2)
2個のデータが以下のようにベクトルの形で与えられるとする。

```math
\vec{f} = 
    \begin{pmatrix}
      f_1 \\
      f_2 \\
    \end{pmatrix}
```
また、データ数が２個なので２種類の基底ベクトルの組{$\vec{e}_1,\vec{e}_2$} , {$\vec{E}_1,\vec{E}_2$}を以下のように定義する。

```math
\{\vec{e}_1,\vec{e}_2 \} 
= \biggl\{
\begin{pmatrix}
      1 \\
      0 \\
    \end{pmatrix}
,
    \begin{pmatrix}
      0 \\
      1 \\
    \end{pmatrix}
\biggr\}   
\quad 
\{\vec{E}_1,\vec{E}_2 \} 
= \biggl\{
\frac{1}{\sqrt{2}} 
    \begin{pmatrix}
      1 \\
      1 \\
    \end{pmatrix}
,\frac{1}{\sqrt{2}} 
    \begin{pmatrix}
      1 \\
      -1 \\
    \end{pmatrix}

\biggr\}       
```

この時$\vec{f}$は以下の二通りの表し方ができる。

```math
\vec{f} = f_1\vec{e}_1+f_2\vec{e}_2
=F_1 \vec{E}_1
+F_2 \vec{E}_2
```
この時$\vec{E}_1,\vec{E}_2$は互いに直交してるので、$F_1,F_2$は以下のように計算できる。 

```math
F_1=
\vec{f}\cdot
\vec{E}_1^*=\frac{f_1+f_2}{\sqrt{2}}
,\quad 
F_2=
\vec{f}\cdot
\vec{E}_2^*=\frac{f_1-f_2}{\sqrt{2}}
```
この結果は連立方程式を解くことによっても得られる。


#結局ベクトルとの関連は？
元のデータは{$\vec{e}_1,\vec{e}_2,...,\vec{e}_N$}についた係数で表現される。
このデータ列を別の基底{$\vec{E}_1,\vec{E}_2,...,\vec{E}_N$}で表現するのが離散フーリエ変換である。

つまり、**離散フーリエ変換は基底ベクトルの変換**とも言える。

例としてデータ数2の場合の離散フーリエ変換を、$x,y$平面内でのベクトル操作で表現してみる。

#空間内での基底変換
先程のデータ2の場合の離散フーリエ変換を、$x,y$平面内のベクトルの操作として表してみる。
まず$\vec{f}$を基底 $\vec{e}_1,\vec{e}_2$を用いて $x,y$平面内にプロットすると以下のようになる。

![DFT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/607769/63a13327-e8ac-b7b0-35c0-09d5fe93525c.png)

次に$\vec{f}$を基底 $\vec{E}_1,\vec{E}_2$を用いて $x,y$平面内にプロットすると以下のようになる。

![DFT (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/607769/105f3e26-c570-5ba8-f8e4-aea19370524d.png)

このグラフをみれば、$F_1,F_2$を求めたければ$\vec{f}$と$\vec{E}_1,\vec{E}_2$の内積を取れば良いことがわかるし、$\vec{E}_1$と$\vec{E}_2$が直交してることもわかる。
#まとめ
データ数２の離散フーリエ変換が２次元平面内の基底変換で表せる事がわかった。
![Untitled Diagram (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/607769/b6716ae4-8d1f-40d9-3b55-931d11d81b17.jpeg)

これが任意のデータ数Nの離散フーリエ変換の場合はN次元空間内の基底変換になる。
![Untitled Diagram (3).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/607769/541c22d0-1556-4404-6a33-e3e925a45864.jpeg)

また、このデータ数が無限に大きければ連続関数のフーリエ変換になりそうではないだろうか。
誤解を恐れずに言うならば、連続関数のフーリエ変換は無限の次元を持つ空間内での基底の変換と言える。