1

離散フーリエ変換について

960
0

はじめに

この記事は離散フーリエ変換についての覚書です。

記号の約束

長さNの複素数列全体をCNと書く。

{an}n=0N1CNとする。また、nZに対し、nNで割ったあまりをq(n)とおく。q(n)により、記号a[n]を次のように定義する。
a[n]=aq(n)
これはつまり
,a[1]=a1,a[0]=a0,a[1]=aN1,a[2]=aN2,
ということ。以降、長さNで一般項がanの数列を{a[n]}n=0N1とも表記する。

離散フーリエ変換

複素数列x={x[n]}n=0N1に対し、次の式で数列X={X[n]}n=0N1を定義する。
X[n]=k=0N1x[k]ei2πNkn

数列Xのことをxの離散フーリエ変換といい、次のように表す。
X=F(x)

離散フーリエ変換の性質

パーセバルの等式

F(x)の定義式から、次の式は任意のx,yCNa,bCに対して明らかに成り立つ。
F(ax+by)=aF(x)+bF(y)

したがってFは線形写像である。そこで、標準基底に関する表現行列Wを考えると次のようになる。
W=(ei2πNnm)=(ei2πN00ei2πN10ei2πN(N1)0ei2πN01ei2πN11ei2πN(N1)1ei2πN0(N1)ei2πN1(N1)ei2πN(N1)(N1))

w=ei2πNとおくともう少し見た目がきれいになる。
W=(w00w10w(N1)0w01w11w(N1)1w0(N1)w1(N1)w(N1)(N1))

ここでU=1NAと置きなおす。このときUはユニタリ行列になる。つまり、Uには逆行列があってU1=Uとなる。

ユニタリ行列の性質から、Uは内積を変えない。実際
Ux,Uy=Ux(Uy)=UxyU=Ux,yU1=x,y
である。したがって次の等式が成り立つ。
F(x),F(y)=Nx,y

特に、x=yのときは次のようになる。
F(x),F(x)=Nx,yx2=1NF(x)2
最後の式を「パーセバルの等式」という。

畳み込み定理

巡回畳み込みはCNの二項演算であり、次のように定義される。
ab={k=0N1a[k]b[nk]}n=0N1

畳み込み定理とは、離散フーリエ変換と巡回畳み込みが持つ次の関係のことである。
F(ab)=F(a)F(b)

実際に成り立つことを確認しよう。n=0,,N1を1つとる。の順序は勝手に交換して良いから
F(ab)[n]=k=0N1(ab)[k]ei2πNkn=k=0N1(l=0N1a[l]b[kl])ei2πNkn=l=0N1k=0N1a[l]b[kl]ei2πNkn=l=0N1a[l]k=0N1b[kl]ei2πNkn=l=0N1a[l]k=0N1b[kl]ei2πN(kl)nei2πNln=l=0N1a[l]ei2πNlnk=0N1b[kl]ei2πN(kl)n
と変形できる。ここで、k=0N1b[kl]ei2πN(kl)nをよく見ると、これはk=0N1b[k]ei2πNknに等しいことが分かる(ちょうど足す順番を入れ替えた形になっている)。k=0N1b[k]ei2πNkn=F(b)[n]なので
F(ab)[n]=l=0N1a[l]ei2πNlnk=0N1b[kl]ei2πN(kl)n=l=0N1a[l]ei2πNlnF(b)[n]=F(a)[n]F(b)[n]
となる。すべてのn=0,,N1についてこれが成り立つから、確かに
F(ab)=F(a)F(b)
が確認できた。

巡回畳み込みと固有分解

畳み込み定理は線形代数によっても示せる。abを、baを左から掛けた結果と考えよう。このとき、写像
φa:CNxaxCN
は(畳み込み積の定義により)線形写像になる。

そこで、φaの標準基底に関する表現行列を考える。eiを第i項が1の単位ベクトルとすると
φa(ei)=aei={k=0N1a[k]ei[nk]}n=0N1={a[ni]}n=0N1(nkimodNknimodN)=(a[0i],a[1i],,a[(N1)i])
だから
φa(e0)=ae0=(a0, a1, a2, , aN1)φa(e1)=ae1=(aN1, a0, a1, , aN2)φa(e2)=ae2=(aN2, aN1, a0, , aN3)φa(eN1)=aeN1=(a1, a2, a3, , a0)
であり、φaの表現行列Φ(a)は次のようになる。
Φ(a)=(a0aN1aN2a1a1a0aN1a2a2a1a0a3aN1aN2aN3a0)

一般に、このような形で書ける行列Φ(a)を巡回行列という。

ここで、唐突ではあるがΦ(a)を対角化しよう。固有方程式は次のとおりである。
det(λEΦ(a))=det(λa0aN1aN2a1a1λa0aN1a2a2a1λa0a3aN1aN2aN3λa0)=0

まず、第1列に他の列をすべて足すと、第1列に表れる項はすべてλ(a0++aN1)になる。したがって、λ=a0++aN1のとき第1列は0ベクトルになるので、これは解の1つである。つまり、Φ(a)の固有値の1つはa0++aN1である。

ここで第1列にw0n、第2列にw1n、第3列にw2n……を掛ける。ただしn=0,,N1である。すると
det(w0n(λa0)w1n(aN1)w2n(aN2)w(N1)n(a1)w0n(a1)w1n(λa0)w2n(aN1)w(N1)n(a2)w0n(a2)w1n(a1)w2n(λa0)w(N1)n(a3)w0n(aN1)w1n(aN2)w2n(aN3)w(N1)n(λa0))=0
である。

次に、第1行にw0n、第2行にw1n、第3行にw2n……を掛ける。
det(λa0w1naN1w2naN2w(N1)na1w1na1λa0w1naN1w(N2)na2w2na2w1na1λa0w(N3)na3w(N1)naN1w(N2)naN2w(N3)naN3λa0)=0

これは、a=(a0,w1na1,w2na2,,w(N1)naN1)とおくとΦ(a)の固有方程式である。Φ(a)の固有値の1つにa0++aN1があったから、Φ(a)の固有値の1つに
a0+w1na1+w2na2+w(N1)naN1
がある。したがって、Φ(a)N個の固有値
λn=a0+w1na1+w2na2++w(N1)naN1=F(a)[n]
が得られた。各λnに属する固有ベクトルvn
Φ(a)vn=λnvn
により、定数倍の違いを除いて
vn=1N(1,w(N1)n,w(N2)n,,w1n)=1N(1,w1n,w2n,,w(N1)n)
である。{v0,,vN1}は線形独立なので、行列(v0  vN1)Φ(a)は対角化できる。ところが、(v0  vN1)=W1なので
W1ΛW=A
である。ただし
Λ=(λ0000λ1000λN1)
である。

さて
ab=Φ(a)b=W1ΛWb
だから、左辺にWを掛けて
W(ab)=ΛWb={λnF(b)[n]}n=0N1={F(a)[n]F(b)[n]}n=0N1=F(a)F(b)
である。よって次式が成り立つ。
F(ab)=F(a)F(b)

投稿日:20201126
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

数学、特に応用数学が好きです。Mathlogでは主に、数学とプログラミングを絡めたようなことを書けたらいいなと思っています。

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. はじめに
  2. 記号の約束
  3. 離散フーリエ変換
  4. 離散フーリエ変換の性質