「応用数学 - 離散フーリエ逆変換」の版間の差分

提供: MochiuWiki : SUSE, EC, PCB

編集の要約なし
 
(同じ利用者による、間の4版が非表示)
41行目: 41行目:
<br>
<br>
順変換と逆変換の指数の符号は反対であり、規格化係数の積は <math>\frac{1}{N}</math> になる。<br>
順変換と逆変換の指数の符号は反対であり、規格化係数の積は <math>\frac{1}{N}</math> になる。<br>
<br><br>
== 行列表現 ==
離散フーリエ逆変換も、行列とベクトルの積として表現できる。<br>
<br>
==== 4次の正方行列による表現 ====
<math>N = 4</math> の時、周波数領域ベクトルと時間領域ベクトルを
<br>
<math>\boldsymbol{X} = \begin{pmatrix} X[0] \\ X[1] \\ X[2] \\ X[3] \end{pmatrix} \, , \quad \boldsymbol{x} = \begin{pmatrix} x[0] \\ x[1] \\ x[2] \\ x[3] \end{pmatrix}</math>
<br>
とすると、4点離散フーリエ逆変換は次のように書ける。<br>
<br>
<math>\boldsymbol{x} = \frac{1}{4}
\begin{pmatrix}
1 & 1 & 1 & 1 \\
1 & i & -1 & -i \\
1 & -1 & 1 & -1 \\
1 & -i & -1 & i
\end{pmatrix}
\begin{pmatrix} X[0] \\ X[1] \\ X[2] \\ X[3] \end{pmatrix}
</math>
<br>
この行列は 4点DFT行列の共役転置に <math>\frac{1}{4}</math> を掛けたものである。<br>
したがって、IDFTはDFTの逆写像として自然に理解できる。<br>
<br>
==== 行列表現の意味 ====
この形で見ると、IDFTは各周波数係数を複素指数基底に沿って加算合成する操作である。<br>
周波数領域で編集した係数列から時間波形を再構成する時の仕組みが、行列の列ベクトルとして可視化される。<br>
<br><br>
<br><br>


207行目: 235行目:


== 計算例 ==
== 計算例 ==
==== 問題 ====
==== 例題 ====
長さ <math>N = 4</math> のスペクトル <math>X[k] = [4, 0, 0, 0]</math> のIDFTを求めよ。<br>
長さ <math>N = 4</math> のスペクトル <math>X[k] = [4, 0, 0, 0]</math> のIDFTを求めよ。<br>
<br>
<br>
==== 計算 ====
==== 計算 ====
定義より、
定義より、<math>x[n] = \frac{1}{4}\sum_{k=0}^{3} X[k]e^{i \tfrac{2 \pi kn}{4}}</math> である。<br>
<br>
ここでは <math>X[0] = 4</math> 以外の成分が全て0なので、<math>x[n] = \frac{1}{4} \cdot 4 \cdot e^{0} = 1</math> となる。<br>
<br>
<br>
<math>x[n] = \frac{1}{4}\sum_{k=0}^{3} X[k]e^{i \tfrac{2 \pi kn}{4}}</math>
したがって、全ての <math>n = 0, 1, 2, 3</math> に対して、 <math>x[n] = 1</math> である。<br>
<br>
<br>
である。<br>
==== 結果の解釈 ====
* 直流成分だけを持つスペクトルは、時間領域では定数信号を与える。
* IDFTは周波数係数を実際の波形へ戻す操作であることが、この最も単純な例で確認できる。
<br><br>
 
== 4点離散フーリエ逆変換の例題 ==
4点IDFTの計算を、行列表現と定義式の両面から確認する。<br>
<br>
==== 問題 ====
長さ <math>N = 4</math> のスペクトル <math>X[k] = [2, 1 - 3i, 0, 1 + 3i]</math> の4点離散フーリエ逆変換を求めよ。<br>
<br>
<br>
ここでは <math>X[0] = 4</math> 以外の成分が全て0なので、
==== 解答 ====
4点IDFT行列を用いると、
<br>
<br>
  <math>x[n] = \frac{1}{4} \cdot 4 \cdot e^{0} = 1</math>
  <math>\begin{pmatrix} x[0] \\ x[1] \\ x[2] \\ x[3] \end{pmatrix} = \frac{1}{4}
\begin{pmatrix}
1 & 1 & 1 & 1 \\
1 & i & -1 & -i \\
1 & -1 & 1 & -1 \\
1 & -i & -1 & i
\end{pmatrix}
\begin{pmatrix} 2 \\ 1 - 3i \\ 0 \\ 1 + 3i
\end{pmatrix}
</math>
<br>
<br>
となる。<br>
となる。<br>
<br>
<br>
したがって、全ての <math>n = 0, 1, 2, 3</math> に対して、
各成分を計算すると、
<br>
<br>
  <math>x[n] = 1</math>
<math>
\begin{cases}
x[0] &= \dfrac{1}{4} \bigl( 2 + (1 - 3i) + 0 + (1 + 3i) \bigr) = 1 \\
x[1] &= \dfrac{1}{4} \bigl( 2 + i(1 - 3i) + 0 - i(1 + 3i) \bigr) = 2 \\
x[2] &= \dfrac{1}{4} \bigl( 2 - (1 - 3i) + 0 - (1 + 3i) \bigr) = 0 \\
x[3] &= \dfrac{1}{4} \bigl( 2 - i(1 - 3i) + 0 + i(1 + 3i) \bigr) = -1
\end{cases}
</math>
<br>
したがって、求める4点IDFTは
<br>
  <math>x[n] = [1, 2, 0, -1]</math>
<br>
<br>
である。<br>
である。<br>
<br>
<br>
==== 結果の解釈 ====
==== 結果の解釈 ====
* 直流成分だけを持つスペクトルは、時間領域では定数信号を与える。
* 4点IDFTにより、周波数領域の複素係数列から元の実数列が完全に復元されている。
* IDFTは周波数係数を実際の波形へ戻す操作であることが、この最も単純な例で確認できる。
* <math>X[1]</math> と <math>X[3]</math> が共役なため、再構成結果は実数列になる。
* この例は、DFTとIDFTが互いに逆演算であることを具体的に示している。
<br><br>
 
== 8点離散フーリエ逆変換の例題 ==
8点IDFTの計算を、2つの周波数ビンから余弦波が再構成される様子として確認する。<br>
<br>
==== 問題 ====
長さ <math>N = 8</math> のスペクトル <math>X[k] = [0, 0, 4, 0, 0, 0, 4, 0]</math> の8点離散フーリエ逆変換を求めよ。<br>
<br>
==== 解答 ====
定義より、 <math>x[n] = \frac{1}{8} \sum_{k=0}^{7} X[k] e^{i \tfrac{2 \pi kn}{8}}</math> である。<br>
<br>
ここでは <math>X[2] = 4</math> と <math>X[6] = 4</math> 以外の成分が0なので、<br>
<math>x[n] = \frac{1}{8} \left( 4 e^{i \tfrac{2 \pi \cdot 2 n}{8}} + 4 e^{i \tfrac{2 \pi \cdot 6 n}{8}} \right)</math> となる。<br>
<br>
ここで <math>e^{i \tfrac{2 \pi \cdot 6 n}{8}} = e^{-i \tfrac{2 \pi \cdot 2 n}{8}}</math> であるから、<br>
<math>x[n] = \frac{1}{8} \left( 4 e^{i \tfrac{\pi n}{2}} + 4 e^{-i \tfrac{\pi n}{2}} \right) = \cos \left( \frac{\pi n}{2} \right)</math> を得る。<br>
<br>
同じ再構成を行列表現で書くために、<math>\widetilde{W}_8 = e^{i \tfrac{2 \pi}{8}}</math> とおく。<br>
<br>
<math>
\begin{pmatrix}
x[0] \\ x[1] \\ x[2] \\ x[3] \\ x[4] \\ x[5] \\ x[6] \\ x[7]
\end{pmatrix}
=
\frac{1}{8}
\begin{pmatrix}
1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
1 & \widetilde{W}_8 & \widetilde{W}_8^2 & \widetilde{W}_8^3 & \widetilde{W}_8^4 & \widetilde{W}_8^5 & \widetilde{W}_8^6 & \widetilde{W}_8^7 \\
1 & \widetilde{W}_8^2 & \widetilde{W}_8^4 & \widetilde{W}_8^6 & 1 & \widetilde{W}_8^2 & \widetilde{W}_8^4 & \widetilde{W}_8^6 \\
1 & \widetilde{W}_8^3 & \widetilde{W}_8^6 & \widetilde{W}_8 & \widetilde{W}_8^4 & \widetilde{W}_8^7 & \widetilde{W}_8^2 & \widetilde{W}_8^5 \\
1 & \widetilde{W}_8^4 & 1 & \widetilde{W}_8^4 & 1 & \widetilde{W}_8^4 & 1 & \widetilde{W}_8^4 \\
1 & \widetilde{W}_8^5 & \widetilde{W}_8^2 & \widetilde{W}_8^7 & \widetilde{W}_8^4 & \widetilde{W}_8 & \widetilde{W}_8^6 & \widetilde{W}_8^3 \\
1 & \widetilde{W}_8^6 & \widetilde{W}_8^4 & \widetilde{W}_8^2 & 1 & \widetilde{W}_8^6 & \widetilde{W}_8^4 & \widetilde{W}_8^2 \\
1 & \widetilde{W}_8^7 & \widetilde{W}_8^6 & \widetilde{W}_8^5 & \widetilde{W}_8^4 & \widetilde{W}_8^3 & \widetilde{W}_8^2 & \widetilde{W}_8
\end{pmatrix}
\begin{pmatrix}
0 \\ 0 \\ 4 \\ 0 \\ 0 \\ 0 \\ 4 \\ 0
\end{pmatrix}
=
\begin{pmatrix}
1 \\ 0 \\ -1 \\ 0 \\ 1 \\ 0 \\ -1 \\ 0
\end{pmatrix}
</math>
<br>
したがって、<math>x[n] = [1, 0, -1, 0, 1, 0, -1, 0]</math> となる。<br>
<br>
==== 結果の解釈 ====
* 共役対称な2つの周波数ビンから、実数の余弦波が再構成されている。
* IDFT は離散スペクトルを複素指数関数の重ね合わせとして時間領域へ戻す操作であることが分かる。
* この例では、<math>k = 2</math> と <math>k = 6</math> の成分だけで 8点列全体が決まっている。
<br><br>
<br><br>


310行目: 422行目:
* [https://sip.seas.upenn.edu/lab3-inverse-discrete-fourier-transform-dft/ UPenn - Inverse DFT Lab]
* [https://sip.seas.upenn.edu/lab3-inverse-discrete-fourier-transform-dft/ UPenn - Inverse DFT Lab]
* [https://docs.openvino.ai/2024/documentation/openvino-ir-format/operation-sets/operation-specs/signals/idft-7.html OpenVINO - IDFT]
* [https://docs.openvino.ai/2024/documentation/openvino-ir-format/operation-sets/operation-specs/signals/idft-7.html OpenVINO - IDFT]
* [[離散フーリエ変換]]
* [[応用数学 - 離散フーリエ変換]]
* [[高速フーリエ変換]]
* [[応用数学 - 高速フーリエ変換]]
* [[フーリエ変換]]
* [[応用数学 - フーリエ変換]]
* [[フーリエ逆変換]]
* [[応用数学 - フーリエ逆変換]]
* [[ラプラス逆変換]]
* [[応用数学 - ラプラス逆変換]]
<br><br>
<br><br>



2026年6月4日 (木) 01:53時点における最新版

概要

離散フーリエ逆変換 (Inverse Discrete Fourier Transform, IDFT) は、周波数領域の離散スペクトルから時間領域の離散信号を復元する線形変換である。
応用数学 - 離散フーリエ変換が有限長の離散時間信号を周波数成分へ分解するのに対し、IDFTはその成分を和として重ね合わせて元の信号を再構成する。

IDFTは、周波数領域での解析結果を再び波形として読み戻すための基本操作である。
この性質により、周波数領域で行ったフィルタリング、圧縮、雑音除去、特徴抽出等の処理結果を時間領域または空間領域で確認できる。

標準的な信号処理の規約では、DFT側に規格化係数を置かず、IDFT側に 1N を置く。
この形は NumPy、SciPy、MATLAB等の実装でも広く採用されている。

適切な規約の下では、IDFTとDFTは完全再構成の対をなし、IDFT(DFT(x[n]))=x[n] が成り立つ。
この完全再構成性は、離散周波数解析が可逆であることを保証する。

IDFTは本質的に、複素指数関数系の直交性に基づく加算合成である。
各周波数成分の振幅と位相を複素係数として保持し、それらを重み付きで足し合わせることで元の信号を復元する。

また、IDFTは長さ N の列を周期 N で周期拡張したものとして扱う。
このため、巡回畳み込み、ゼロパディング、折り返し等の概念は、IDFTを実用的に使用する上で重要である。

実際の応用では、周波数領域で高周波成分を間引いた後にIDFTで近似波形を再構成したり、FFTベースの高速畳み込みや圧縮復元を実現したりする。

このように、IDFTは、単なる逆公式ではなく、離散周波数表現を現実の信号へ戻すための中核技術となっている。


離散フーリエ逆変換の定義

長さ N の複素数列 X[k] に対し、離散フーリエ逆変換 x[n] は以下のように定義される。

標準的な定義

x[n]=1Nk=0N1X[k]ei2πknN(n=0,1,,N1)


ここで、X[k] は周波数領域のDFT係数x[n] は時間領域の離散信号N は変換長 である。

この和により周波数インデックス k が消え、時間インデックス n の信号が得られる。

正変換との対

対応する正変換は

X[k]=n=0N1x[n]ei2πknN


である。

順変換と逆変換の指数の符号は反対であり、規格化係数の積は 1N になる。


行列表現

離散フーリエ逆変換も、行列とベクトルの積として表現できる。

4次の正方行列による表現

N=4 の時、周波数領域ベクトルと時間領域ベクトルを

X=(X[0]X[1]X[2]X[3]),x=(x[0]x[1]x[2]x[3])


とすると、4点離散フーリエ逆変換は次のように書ける。

x=14(11111i1i11111i1i)(X[0]X[1]X[2]X[3])


この行列は 4点DFT行列の共役転置に 14 を掛けたものである。
したがって、IDFTはDFTの逆写像として自然に理解できる。

行列表現の意味

この形で見ると、IDFTは各周波数係数を複素指数基底に沿って加算合成する操作である。
周波数領域で編集した係数列から時間波形を再構成する時の仕組みが、行列の列ベクトルとして可視化される。


離散フーリエ逆変換の意味

IDFTは、離散スペクトルをもとの信号へ戻す再構成操作である。

周波数成分の重ね合わせ

各係数 X[k] は、角周波数 2πkN に対応する複素指数関数の重みを表す。

IDFTでは、それらの成分を、

ei2πknN


に沿って足し合わせ、波形を合成する。

加算合成としての理解

IDFTは加算合成 (additive synthesis) とみなせる。

複素係数 X[k] を振幅と位相を持つ周波数成分の集まりと考えると、IDFTはその全成分を加えて1つの信号を作る操作である。

実用的な見方

信号処理では、DFTによって周波数領域へ写した後、その係数を編集してからIDFTで戻すことが多い。
ローパスフィルタ、高周波雑音除去、圧縮後の再生等は、この流れで理解できる。


反転公式と再構成

完全再構成

適切な規約の下では、

IDFT(DFT(x[n]))=x[n]


が成り立つ。

これは、DFTとIDFTが互いに逆演算であることを意味する。

直交性による証明の考え方

複素指数関数系は離散信号空間で直交性を持つ。

具体的には、

n=0N1ei2π(km)nN=Nδ[km]


が成り立つ。

この関係をDFTの式に代入すると、不要な周波数成分は打ち消し合い、対応する成分のみが残る。

実信号の再構成

x[n] が実信号である時、スペクトルは、

X[k]=X[Nk]


という共役対称性を持つ。

このため、IDFTで複素共役な成分が互いに打ち消し合い、最終的に実数値信号が得られる。


記法と規格化の規約

IDFTの規格化は文献や実装で異なる。
本ページでは、応用数学 - 離散フーリエ変換と整合する標準的な信号処理の規約を主に扱う。

標準的な規約 (信号処理)

x[n]=1Nk=0N1X[k]ei2πknN


この規約は、正変換に係数 1、逆変換に係数 1/N を置く。

対称形規約

x[n]=1Nk=0N1X[k]ei2πknN


対称形では、正変換と逆変換が同じ係数を持つ。
プランチェレル型の関係やユニタリ性を見通しよく扱える。

その他の規約

一部の文献では、正変換に 1N を置き、逆変換を無規格化とする。

重要なのは、対応する順変換と逆変換が互いに逆写像となることである。

ライブラリでの実装

NumPyとSciPyの ifft は、現在の既定値では backward 規約を採用し、IDFT 側で 1/N を掛ける。
norm="forward"norm="ortho" を指定すると、規格化の置き方を変更できる。

MATLABの ifft も標準的には 1N を含む。


基本的な性質

線形性

任意の定数 ab に対して、

IDFT[aX1[k]+bX2[k]]=ax1[n]+bx2[n]


が成り立つ。

巡回シフト

周波数領域での巡回シフトは、時間領域での位相因子の乗算に対応する。

IDFT[X[(km)modN]]=ei2πmnNx[n]


時間領域での巡回シフト

周波数領域で複素指数因子を掛けると、時間領域では巡回シフトが起きる。

IDFT[X[k]ei2πkn0N]=x[(nn0)modN]


パルセヴァルの等式

x[n]y[n] に対して

n=0N1x[n]y[n]=1Nk=0N1X[k]Y[k]


が成り立つ。

これは、周波数領域から復元しても信号エネルギー対応が保たれることを示す。

積と畳み込み

周波数領域の積をIDFTすると、時間領域の巡回畳み込みが得られる。

IDFT[X[k]Y[k]]=(xy)[n]


この性質が、FFTベース高速畳み込みの基礎となる。


巡回畳み込みと時間領域への復元

IDFTは有限長列を周期的に拡張したものとして扱う。
そのため、復元された波形も周期境界の影響を受ける。

巡回畳み込み

長さ N の列に対して

(xy)[n]=m=0N1x[m]y[(nm)modN]


で定義される。

DFT領域で積を取り、その後IDFTを行うと、この巡回畳み込みが得られる。

線形畳み込みを得る方法

線形畳み込みが欲しい場合には、あらかじめ十分なゼロパディングを施す必要がある。
具体的には、長さ NxNy の2信号なら、少なくとも Nx+Ny1 以上に拡張する。

折り返しの注意

ゼロパディングが不十分だと、巡回畳み込みの折り返しが時間領域に現れ、意図しないエイリアシングが生じる。
この点は、IDFTを用いた高速畳み込みや復元計算で特に重要である。


基本的な逆変換表

下表に、標準的な規約における代表的なIDFT対を示す。

基本的な離散フーリエ逆変換対
X[k] x[n]
1 δ[n]
Nδ[k] 1
Nδ[(kk0)modN] ei2πk0nN
N2[δ[(kk0)modN]+δ[(k+k0)modN]] cos(2πk0nN)
N2i[δ[(kk0)modN]δ[(k+k0)modN]] sin(2πk0nN)


  • δ[n] はクロネッカーのデルタ関数である。
  • 規格化が異なると係数も変化する。



計算例

例題

長さ N=4 のスペクトル X[k]=[4,0,0,0] のIDFTを求めよ。

計算

定義より、x[n]=14k=03X[k]ei2πkn4 である。

ここでは X[0]=4 以外の成分が全て0なので、x[n]=144e0=1 となる。

したがって、全ての n=0,1,2,3 に対して、 x[n]=1 である。

結果の解釈

  • 直流成分だけを持つスペクトルは、時間領域では定数信号を与える。
  • IDFTは周波数係数を実際の波形へ戻す操作であることが、この最も単純な例で確認できる。



4点離散フーリエ逆変換の例題

4点IDFTの計算を、行列表現と定義式の両面から確認する。

問題

長さ N=4 のスペクトル X[k]=[2,13i,0,1+3i] の4点離散フーリエ逆変換を求めよ。

解答

4点IDFT行列を用いると、

(x[0]x[1]x[2]x[3])=14(11111i1i11111i1i)(213i01+3i)


となる。

各成分を計算すると、

{x[0]=14(2+(13i)+0+(1+3i))=1x[1]=14(2+i(13i)+0i(1+3i))=2x[2]=14(2(13i)+0(1+3i))=0x[3]=14(2i(13i)+0+i(1+3i))=1


したがって、求める4点IDFTは

x[n]=[1,2,0,1]


である。

結果の解釈

  • 4点IDFTにより、周波数領域の複素係数列から元の実数列が完全に復元されている。
  • X[1]X[3] が共役なため、再構成結果は実数列になる。
  • この例は、DFTとIDFTが互いに逆演算であることを具体的に示している。



8点離散フーリエ逆変換の例題

8点IDFTの計算を、2つの周波数ビンから余弦波が再構成される様子として確認する。

問題

長さ N=8 のスペクトル X[k]=[0,0,4,0,0,0,4,0] の8点離散フーリエ逆変換を求めよ。

解答

定義より、 x[n]=18k=07X[k]ei2πkn8 である。

ここでは X[2]=4X[6]=4 以外の成分が0なので、
x[n]=18(4ei2π2n8+4ei2π6n8) となる。

ここで ei2π6n8=ei2π2n8 であるから、
x[n]=18(4eiπn2+4eiπn2)=cos(πn2) を得る。

同じ再構成を行列表現で書くために、W~8=ei2π8 とおく。

(x[0]x[1]x[2]x[3]x[4]x[5]x[6]x[7])=18(111111111W~8W~82W~83W~84W~85W~86W~871W~82W~84W~861W~82W~84W~861W~83W~86W~8W~84W~87W~82W~851W~841W~841W~841W~841W~85W~82W~87W~84W~8W~86W~831W~86W~84W~821W~86W~84W~821W~87W~86W~85W~84W~83W~82W~8)(00400040)=(10101010)


したがって、x[n]=[1,0,1,0,1,0,1,0] となる。

結果の解釈

  • 共役対称な2つの周波数ビンから、実数の余弦波が再構成されている。
  • IDFT は離散スペクトルを複素指数関数の重ね合わせとして時間領域へ戻す操作であることが分かる。
  • この例では、k=2k=6 の成分だけで 8点列全体が決まっている。



離散フーリエ変換との関係

正変換と逆変換の対称性

DFTとIDFTは、指数関数の符号と規格化係数を除いて対称な形をしている。

  • 正変換
    時間領域から周波数領域への写像
    X[k]=n=0N1x[n]ei2πknN
  • 逆変換
    周波数領域から時間領域への写像
    x[n]=1Nk=0N1X[k]ei2πknN


双対性

DFTを2回適用すると、元の信号は巡回反転されて N 倍された形で戻る。
すなわち、

DFT[X[n]]=Nx[(k)modN]


が成り立つ。

この関係は、順変換と逆変換の構造的な近さを示している。


高速フーリエ変換との関係

IDFT と IFFT

実装上は、IDFTはしばしばIFFT (inverse FFT) として高速に計算される。
これは、IDFTそのものが別の変換に置き換わるのではなく、同じ演算を高速化しているにすぎない。

計算量

  • 直接計算
    O(N2)
  • FFTベース実装
    O(NlogN)


実装上の定石

一部の実装や理論説明では、

  1. スペクトルの複素共役をとる。
  2. FFTを適用する。
  3. 結果の複素共役をとり、N で割る。


という形で、IDFTを説明する。
これは、FFTとIDFTの密接な関係を示す実装上の工夫である。


応用

信号復元

  • 周波数領域で加工した信号を時間領域へ戻す。
  • 雑音除去後の波形再構成や、ローパス処理後の平滑化に利用される。


圧縮と近似再構成

高周波成分の一部を捨てた後にIDFTを行うと、近似的な元信号を得られる。
この考え方は、音声圧縮や特徴量削減の基礎的理解に有用である。

通信工学

  • OFDMの受信側復調
    サブキャリア表現から時間波形を取り出す。
  • チャネル逆特性の適用後の波形復元
    周波数領域補償結果を時間領域へ戻す。


画像処理

2次元IDFTは周波数領域で編集した画像スペクトルから空間画像を再構成する。
MRIや回折像再構成等でも同様の考え方が現れる。

ライブラリ利用の実務

NumPy、SciPy、MATLAB、OpenVINO等では、IDFTは多次元・任意軸・実数最適化付きで利用できる。
そのため、現代の実装では理論式だけでなく、規格化や軸方向の解釈も重要である。


関連情報