離散フーリエ変換(、英: discrete Fourier transform, DFT)は有限長の離散時間信号をフーリエ変換様に周波数領域へ変換する操作である[1]。
離散フーリエ変換(以下、DFT)は有限長の離散時間信号をフーリエ変換様に周波数領域へ変換する操作である[1](⇒ #定義)。応用数学から信号処理まで、幅広く応用される(⇒ #応用)。
DFTは(計算機上で)高速フーリエ変換を使って高速に計算できる。
を離散変数とし、有限長
をもつ複素離散時間信号
の離散フーリエ変換
は次式で定義される[1][2]:
![{\displaystyle X[k]=\sum _{n=0}^{N-1}x[n]\,e^{-i\omega _{k}n},\quad \omega _{k}={\frac {2\pi k}{N}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c037726f1e3a818f9dd5e6de9da749e47e7785b4)
は正規化角周波数と呼ばれ[3]、
は周波数スペクトルとも呼ばれる。
を連続変数、
を任意定数とし、無限長の複素連続時間信号
の離散フーリエ変換
は次式で定義される:

この定義においてDFTは複素関数
を複素関数
に写す写像と理解される。{
}は標本点と呼ばれる。また、この変換を
という記号で表し、
のように略記することが多い。
なお、この定義は1つめの定義において
を
で置き換えた(=有限長の離散時間信号を無限長の連続時間信号で置き換えた)ものである。この置き換えは総和
の部分で
から離散的に
個の値を取り出している(=その場で
を作っている)ため成立する。
以下では、フーリエ変換やサンプリングとの関係を説明するために、2つめの定義で説明している箇所がある。
DFTの定義は別の表記法で表現されることもある。
回転因子(、英: twiddle factor)は定数
で特徴づけられる複素指数定数
である[2]。
あるいは
で略記される。
回転因子
は定数
で特徴づけられる、絶対値
、偏角
の複素指数定数である。絶対値が
であるため、
の実数乗はこの複素指数を複素平面上で回転することと解釈できる。そのため実数変数(例:
)で累乗すれば
が周波数を規定する回転の信号を表現でき(例:
)、それを実数定数(例:
)で累乗すれば
倍の周波数をもった信号を表現できる(例:
)。
回転因子を用いて DFT の定義は以下の式でも表現される[2]:
![{\displaystyle X[k]=\sum _{n=0}^{N-1}x[n]\,{W_{N}}^{kn}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/29cb28823cf43e9950b45b8d17e319c354b86721)
離散フーリエ変換はフーリエ変換に類似した変換であるので、フーリエ変換と類似した性質を持つ。
離散フーリエ変換においては、有限個の標本点しか使わないため、ある関数を離散フーリエ変換し、それを逆変換した場合に、標本点以外で元の関数と一致するとは限らない。
すなわち、複素関数fに対して、

により離散フーリエ変換を行い、それを逆変換したものをgとすると

は言えるが、その他の点で
が言えるとは限らない。これを高周波の問題、あるいはエイリアシング(aliasing)という。
は内積

に関し、
が整数のとき直交基底である。

はクロネッカーのデルタ
畳み込み定理は、離散フーリエ変換では本来成立しないものであるが、変換される関数(あるいは数列)を「周期関数(周期数列)とみなす」ことにより成立するのもである。
離散フーリエ変換の標本点を
とした場合、二つの(一般には複素数値の)関数
と
の畳み込み
は、まず関数
と
を周期化した関数
、
を次のように定め、
、ただし
となるよう整数
を決める
、ただし
となるよう整数
を決める
次のように定められる。

本来的な(周期化しない)畳み込みは、
であるため、
の部分で周期化した畳み込みと異なっている。
周期化した関数の離散フーリエ変換は、
(
)のため、元の関数の離散フーリエ変換と同じものになる。
周期関数の畳み込みを離散フーリエ変換したものは、それぞれの離散フーリエ変換の積になる(畳み込み定理)。

離散フーリエ変換を数列に対して定義する場合も、同様に元の数列を周期数列に拡張し、周期化した畳み込みを定義して、同様な畳み込み定理を成立させることができる。
畳み込み和を直接定義式を用いて計算すると O(N²) の計算量が掛かる。しかし、上式より一旦、離散フーリエ変換をしてから掛算をして、そして逆変換で戻す方法もある。DFT の高速アルゴリズムである FFT を介してこのように計算すると O(N log N) の計算量で済む。
ただし、この方法により、逆変換で正しい値を算出できるのは標本点だけで、それ以外の点では正しい値を得られるとは限らない。また、「離散フーリエ変換の積」を「周期化した畳み込みの離散フーリエ変換」とみなして、それを逆変換して得られるものは、周期化した畳み込み関数(数列)であるため、標本点以外の点では周期化の影響を受ける。この誤差を折り返し雑音と言う。
また、二つの(一般には複素数値の)関数
と
の相互相関
は以下のように定義される。
が上記の周期性を持てば、
さらに
の関数値が実数であれば、
となる.ここで上線をつけた
は
の複素共役を表す。
応用上は、実数値関数を対象とすることが多いが、
が実数値関数であるときには、
(
は
の複素共役)。そのため出力
の半分(
)で全ての情報を持っていることになる。
逆離散フーリエ変換(、英: inverse discrete Fourier transform, IDFT)は次で定義される:

正規化係数(DFT は 1, IDFT は 1/N)や指数の符号は単なる慣習的なものであり、上式とは異なる式を扱うことがある。DFT と IDFT の差について、それぞれの正規化係数を掛けると 1 / N になることと、指数の符号が異符号であるということがだけが重要であり、根本的には同一の変換作用素と考えられる。DFT と IDFT の正規化係数を両方とも
にすると、両方ともユニタリ作用素(ユニタリ変換)になる。理論的にはユニタリ作用素にするのが好ましいが、実用上数値計算を行うときは上式のように正規化係数を1つにまとめて、スケーリングを一度に行うことが多い。
デジタル画像処理では2次元変換が画像の周波数成分を解析するのに使われる。
変換は以下のように定義される。

そして逆変換は次のようになる。

但し
は2次元信号(例えば画像)であり、fのx列y行成分のことである。
は
の2次元周波数スペクトラムである。ここでuはx成分の周波数、vはy成分の周波数である。
2次元DFT は行列を用いて簡単に記述できる。
ここで

(注:これはユニタリ行列)

2次元DFT を行列計算によって以下のように変形できる。

![{\displaystyle F(u,v)=\sum _{x=0}^{M-1}\left[\sum _{y=0}^{N-1}f(x,y)e^{-2\pi i{\frac {vy}{N}}}\right]e^{-2\pi i{\frac {ux}{M}}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/282a04c827fec769253db59bbc2f5ae611d7961f)
![{\displaystyle F(u,v)=\sum _{x=0}^{M-1}\underbrace {\left[\sum _{y=0}^{N-1}f(x,y)e^{-2\pi i{\frac {vy}{N}}}\right]} _{{\mathcal {F}}_{y}f(x,y)}e^{-2\pi i{\frac {ux}{M}}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/172c2dbabf5d940e8676b7ac21d8dffe70d92a0d)




以下上式の 1 - 7 を解説すると、
- 2次元DFTの定義
- 式1から e-2πiux/M を内側σから出した
- 内側のσは、信号
のyの次元(
と書いた行)の1次元DFTであることを示している
- 式3で示した、
の行列表現
- 式3の注目箇所を
で書き変えた -
は
のx行目の行のv番目の周波数。
の1次元DFTの行を集めたものがFvである。
- 式4の1次元DFTの行列表現と同様に、FvTを使って式5を表現した
- 式4を式6に代入した結果。ここでWは対称行列であるのでW=WTとした。
の行は
のx行目の行を1次元DFTしたものである。ゆえに
は
の各行の1次元DFTした結果の行ベクトルを集めたものになる。F=WFvTにおける、FvTを後から掛ける作用素は
の列の1次元DFTしたものと同じと考えて良い。
つまり、2次元DFT(2次元フーリエ変換も同様だが)は
を、各行ごとに1次元DFTし、その結果をさらに各列ごとに1次元DFTする事と等価である。ここで、1次元DFTの計算はFFTのアルゴリズムで高速に計算できる。そのため実用上は2次元DFTも、2次元FFTとして計算される。
離散フーリエ変換が持つ多くの性質は、
が1の原始N乗根(primitive root)であることのみに依存している。そのため、単位元の原始N乗根
が存在するならば、複素数以外の環や体においても同様に離散フーリエ変換を定義することができる。離散フーリエ変換 (一般)を参照のこと。
表中で、
時間領域
|
周波数領域
|
備考
|
|
|
IDFT,DFTのWを使った定義
|
|
|
定義
|
|
|
定義
|
|
|
線形性
|
|
|
時間軸変調、周波数軸移動
|
|
|
時間軸移動(正)
|
|
|
時間軸移動(負)
|
|
|
時間軸畳み込み、周波数軸積
|
|
|
時間軸積、周波数軸畳み込み
|
|
|
時間軸共役、周波数軸反転
|
|
|
時間軸反転、周波数軸共役
|
|
|
時間軸実部、周波数軸偶関数
|
|
|
時間軸虚部、周波数軸奇関数
|
|
|
時間軸偶関数、周波数軸実部
|
|
|
時間軸奇関数、周波数軸虚部
|
|
|
べき乗
|
DFTは多くの広い分野で利用されている。ここでは、その中の一部を示しているだけに過ぎない。これらの応用は高速フーリエ変換(FFT)とその逆変換(IFFT)で高速に計算できることを前提としていて、定義通りにDFTを計算しているのではない。
信号x(t)を解析するのに使われる。ここでtは時間で[0,T]の範囲をとるものとする。例えば、音声信号の場合は、x(t)は時刻tでの空気の圧力を表現することになる。
この信号はN個の等間隔の点で標本化されて、x0, x1, x2, ... , xN-1 の実数列になる。但し標本化の間隔を Δx(=T/N) とすると xk=x(k Δx) である。これのDFTである f0, ..., fN−1 をFFTで計算できる。ただし標本化定理からこれの半分(Nが偶数とすると、fN/2 + 1, ..., fN−1)は冗長であるので捨てるか無視する。
DFT から得られる |fk|/N は信号の周波数 j/T 成分の振幅の半分の値であり、振幅スペクトルと呼ばれる。また、この偏角である arg(fj) はこの周波数成分の位相を表す。また、|fk|2はパワースペクトルと呼ばれ、この周波数成分のエネルギーを表している。
fkは信号x(t)のフーリエ級数の係数に相当するものと考えることができる。そのために、無限に広がるフーリエ級数計算を、有限のサンプル点に対しての DFT を使って近似するという形になる。連続信号の場合はこれをスペクトル推定(spectral estimation)と呼び、色々な推定法がある。(例えば、DFT が有限サンプル点を扱うことに起因するスペクトル漏れの弊害を少しでも和らげるために窓関数(窓))を使うことがよく行われる。)
信号処理の分野では周波数領域(フーリエ変換)で処理をすることも少なくない。例えば、画像の非可逆圧縮や音声圧縮技術などでは離散フーリエ変換の考えが用いられている。信号に対して DFT (実装上ではFFT) を行い、人間が知覚しづらい周波数成分の情報を取り除くことで、正味の情報量を削減(圧縮)する。最も単純な方法では、IDFTの際にその取り除いた周波数情報(フーリエ係数)を0にすることにより、通常のIDFTを実現する。実装の単純化(計算の効率化)のために、実数演算のみで可能な離散コサイン変換を使って2次元情報を圧縮した例がJPEGである。
大きな数や多項式の乗算アルゴリズム(英語版)において、DFTを使う高速なアルゴリズムとして1971年にショーンハーゲ・ストラッセン法が発見された。数字や多項式の係数の列を畳み込み演算の対象のベクトル[要曖昧さ回避]と見なす。するとそれぞれのベクトルの DFT を造り、その結果同士のベクトルを要素ごとに乗算した新たなベクトルを作り、それを逆変換することにより掛算の計算結果が得られる(つまり畳み込み定理を使う)。2007年に理論上はショーンハーゲ・ストラッセン法よりも高速なアルゴリズム(en:Fürer's algorithm)が発見された。
離散フーリエ変換
離散フーリエ逆変換
とするところもある(図解雑学 フーリエ変換)。
これは、フーリエ変換を
、フーリエ逆変換を
としたときの式である。
- ^ a b c
離散フーリエ変換(DFT: Discrete Fourier Transform)は,有限長の離散信号(数列)に対して定義されるフーリエ解析手法
(菊池 2009, p. 2)
- ^ a b c
N点の数列x[n]に対し,DFT は,
と定義される ... ただし,
である.
(菊池 2009, p. 2)
- ^
正規化角周波数 
p.26 より引用。半塲, 滋 (2018), “第5回 離散フーリエ変換”, ディジタル信号処理, 琉球大学, http://dsl4.eee.u-ryukyu.ac.jp/DOCS/DSP/p05.pdf
- E. O. Brigham, The Fast Fourier Transform and Its Applications (Prentice-Hall, Englewood Cliffs, NJ, 1988).
- A. V. Oppenheim, R. W. Schafer, and J. R. Buck, Discrete-Time Signal Processing (Prentice-Hall, 1999).
- S. W. Smith, The Scientist and Engineer's Guide to Digital Signal Processing, (California Technical Publishing, San Diego, 2nd edition, 1999)
- W. L. Briggs and van E. Henson: The DFT - An Owner's Manual for the Discrete Fourier Transform (SIAM, 1995).