━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━計測コラム

emm142 号用━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

基礎からの周波数分析（10）－「離散フーリエ変換（DFT）その２」
前回、高速フーリエ変換（FFT）について説明しましたが、FFT は離散フーリエ変換（DFT）を単に高速に演算する算法に過ぎないので、今回は引き続き DFT のいろんな性質に関してお話しします。なお、今後の説明で DFT 演算は、FFT を使っていることを前提とします。
前々回（emm 138 号）で説明したように、N 点の時間信号 x n を DFT することにより、同じ
く N 点の周波数関数 Xk が得られます。さらに、時間信号 と周波数関数 の両方とも、N 点を１周期とする周期的な関数となります（図 1 参照）。

TR VSWSNSNN`ab VaabWOQ VPWPN
図1

N 点時間関数を x n を DFT した N 点周波数関数 Xk

DFT の定義式を再掲します。

Xk N 1

x enj2knN.................................（1）n 0

ここで、 n  0, 1,  , N  1 、 k  0, 1,  , N  1-1-複素フーリエ級数で説明したように、フーリエ変換すると正負の周波数が現れますが、DFTでは、図 1 で明らかなように、N 点の後半は負の周波数に相当します。周波数関数 Xk を X k と書くと；

X N  k   X * k .................................（2）ここで、* は複素共役を表す
式（2）の証明は、x n は実数ですから；

X N  k  N 1

x e

n2
N 1n N  k Nxn0

 X * k n e

 j 2 n  jn02N 1nkNxn ej2nkNn0すなわち、周波数関数 Xk の複素数データ列は、k = N /2 に関して実数部は線対称、虚数部は点対称、あるいは、k = N /2 に関して、絶対値が同じで位相は符号だけが逆となります（図 1 の下の図は、絶対値を表していることに注意してください）。
「時間信号のサンプリング」（emm 136 号）でのサンプリング定理でも理解できるように、
N 点の時間データから、N /2 点の複素数の周波数データが得られることになります 。
図 2 は、N = 64 点の時間データを DFT（ FFT）することにより、同じくN点の周波数データ（複素数）が得られ、正の周波数と負の周波数のデータ並びを表しています。

GFA7@8R _ ZX [X \X ]X YYYYYX ^]9+,-.

/01231+ 1, 1- 1.

HKIA7@8Q _ ZX [X \X ]X YYYYYX ^]9+,-.

/0-. -/ -0-3 -4 .+ ., .- .. ./ .0

04 1+ 1, 1- 1.

*., *.+ *-4*0 */ *. *- *,

J;HKI

L;HKI

556 <BC=>:;HKIDE?

図2DFT（ FFT ） における周波数領域のデータ並び（N = 64 の例）-2-実際の DFT の計算方法ですが、式（1）において時間関数 x n は複素数データとして扱われ、通常時間データは実数なので虚数部に 0 データを付加して N 点の複素数時間データに変換して演算を実行しています。
これらの DFT に関する機能や性質を利用して、2ch の実数時間データを 1 回の DFT（FFT）で効率よく演算処理する方法を紹介します。

2 つの N 点の実数時間関数 x ( n ) と y ( n ) に対して以下の複素数時間関数 z ( n ) を定義します。
z n   x n   j y n .................................（3）

ここで、 n  0, 1,  , N  1
式（3）の右辺の DFT は、その線形性の性質より；

Z k   X k   j Y k  XR k   j XI k   j YR k   j YI k  XR k   YI k   j XI k   YR k .................................（4）

実際の計算で得られた DFT の結果を；Z k   ZR k   j ZI k .................................（5）とすると、式（4）と式（5）を比較して

ZR k   XR k   YI k .................................（6）ZI k   XI k   YR k .................................（7）となることが分かります。
時間関数 x ( n ) と y ( n ) はともに実数なので、それらの周波数データは式（2）の複素共役の関係が成り立ちますので、式（6）から；
ZR k   ZR N  k 2ZR k   ZR N  k YI k  
2
XR k  -3-

また、式（7）から；

ZI k   ZI N  k 2ZI k   ZI N  k YR k  2XI k  

この結果より、時間関数 x ( n ) の DFT X ( k ) は；X k  ZR k   ZR N  k ZI k   ZI N  k j2
2.................................（8）

ここで、 k  0, 1, , N / 2
また、時間関数 y ( n ) の DFT Y ( k ) は；Y k  ZI k   ZI N  k ZR k   ZR N  k j2
2.................................（9）

ここで、 k  0, 1, , N / 2となります。
このように、FFT 演算した後に最後に式（8）と式（9）の演算をすることにより、2ch の時間関数の DFT を 1 回の FFT で実行することが出来ます。また、これから、N 点の複素数時間データから、同じく N 点の有効な複素数周波数データが得られることが理解できます。

さらに、2 N 点の 1ch 時間データを前半と後半（あるいは偶数値と奇数値）部分に分解してそれを実数部と虚数部とみなして N 点の複素数時間データとして、2 N 点の時間データのDFT を１回の N 点 FFT で求める方法もあります。
次回は、DFT を使って、FFT アナライザでは、どのように周波数軸上の関数を計算しているかをご説明します。

-4-

最後に、まとめです。

(1) N 点の時間信号 x n を DFT することにより、同じく N 点の周波数関数 X k が得られ、時間信号 x n と周波数関数 X k の両方とも、N 点を１周期とする周期的な関数となります。

(2) DFT では、N 点の周波数データのうち、前半が正の周波数領域で後半が負の周波数領域となります。

(3) 周波数関数 X k の複素数データ列は、k = N /2 に関して実数部は線対称、虚数部は点対称、あるいは、k = N /2 に関して、絶対値が同じで位相は符号だけが逆となります(4) DFT の性質を利用して、 2ch の実数時間データを 1 回で FFT する方法や 1chの 2 N 点の時間データを 1 回の N 点 FFT で求める方法など、効率的な演算が可能です。

【キーワード】DFT（離散フーリエ変換）、FFT（高速フーリエ変換）、複素共役、サンプリング定理【参考資料】
1.

「高速フーリエ変換」E. ORAN BRIGHAM 著

2.

「ディジタルフーリエ解析（I）－基礎編－」城戸健一著

科学技術出版社
コロナ社
以上（Hima）-5-