書名: 數字信號處理作者名: 姚劍清編著本章字數: 1559字更新時間: 2024-05-17 09:30:22
1.3 離散傅里葉變換(DFT)舉例
圖1.3a表示任意一個數字信號xa(nT)。雖然信號xa(nT)是從n=-∞變化到+∞的(任何時域信號,包括模擬信號和數字信號,在時間上都是從t=-∞變化到t=+∞的),但實際上只能取它的一小部分,比如圖1.3a中從xa(0)至xa(3T)的4個樣點(這里的4個樣點只是舉例,DFT的實際樣點數可以很大,比如32768個樣點)。
有了這4個樣點,就可以分析數字信號xa(nT)在t=0~3T區間內的頻率組成。具體方法是,把這4個樣點向兩側周期性地無限延伸,以得到一個時間上從-∞變化到+∞的數字信號x(nT),如圖1.3b所示。現在的任務也就變成了對圖1.3b中的周期信號x(nT)計算頻率組成。
由于x(nT)是周期信號,就可以展開為傅里葉級數[此時的x(nT)可看作是連續時域信號,并假設在t=nT以外所有時間點上的幅度處處為零]。而傅里葉級數中每一項的系數X(k)表示信號x(nT)中包含的頻率分量。根據傅里葉級數展開的計算規則,系數X(k)可計算為

對于式(1.2),暫時不必關心計算細節(后面的第12章將具體說明)。只需知道,從式(1.2)可以算出從X(0)~X(3)的4個傅里葉級數的系數。在具體計算時,先令k=0,由于e-jnkπ/2=e0=1,所以X(0)=x(0)+x(T)+x(2T)+x(3T)。這實際上是在計算x(nT)的直流分量(還應除以4,這在后面第12章說明)。然后令k=1,就可算得X(1)=x(0)×e0+x(T)×e-jπ/2+x(2T)×e-jπ+x(3T)×e-j3π/2。再令k=2,3,就可分別算得X(2)和X(3)。這就得到了數字信號x(nT)的4個頻率分量X(0)、X(1)、X(2)和X(3)。這4個頻率分量就是圖1.3a中從x(0)~x(3T)的4個樣點序列的離散傅里葉變換,可以用來估算信號xa(nT)在t=0~3T時間區間內的頻率組成。

圖1.3 用數字信號中的部分樣點組成周期信號
a)數字信號xa(nT) b)周期信號x(nT)
根據式(1.2)的計算方法,可以畫出相應的DFT計算圖,如圖1.4a所示。圖中,當k=0時,只需把x(0)~x(3T)加起來,就得到X(0)。當k=1時,需將x(0)~x(3T)分別與1、e-jπ/2、e-jπ、e-j3π/2相乘,然后把它們加起來,就得到X(1)。當k=2(或3)時,需將x(0)~x(3T)分別與1、e-jπ/2、e-jπ、e-j3π/2的平方(或立方)相乘,再把乘積項加起來就得到X(2)[或X(3)]。對于圖1.4a中DFT計算圖的正確性,可以用圖1.4b和c中的兩個信號序列來測試。下面來說明。
圖1.4b左邊的x1(n)是一個直流信號。用圖1.4a中的結構算出的結果為X1(0)=4和X1(1)=X1(2)=X1(3)=0,如圖1.4b右邊所示。這表示輸入信號中只有直流分量,其他頻率分量都為零。這當然是對的。
圖1.4c左邊的x2(n)是一個頻率等于fS/4的零相位余弦信號。由于信號頻率為采樣率fS的1/4,所以每個信號周期內被采得4個樣點,如圖1.4c左邊所示。用圖1.4a中的結構算出的結果為X2(1)=X2(3)=2.0和X2(0)=X2(2)=0,如圖1.4c右邊所示。這表示輸入信號中只有頻率為fS/4的分量,其他頻率分量都為零。這當然也是對的。這就完成了用信號序列x1(n)和x2(n)對圖1.4a中DFT計算圖的驗證[在圖1.4c的右邊,fS為采樣率,X2(1)和X2(3)都表示頻率等于fS/4的分量,而且兩者是同一個頻率分量,X(0)表示直流分量,X(2)表示位于fS/2的頻率分量。后面第3章將詳細說明這些概念]。
圖1.4a中計算圖的要點是,圖中的大多數乘法計算都是重復的(樣點數越多越明顯)。利用這一特點,可以使計算量大為節省,這就是所謂的快速傅里葉變換(Fast Fourier Transform,FFT)。此外,圖1.4b和圖1.4c中右側的頻率譜應該看成是以采樣率fS為周期向兩側無限重復的,這是數字信號處理中最基本的概念。或者說,任何一個數字信號的頻率譜都是以采樣率fS為周期而向兩側無限重復的。

圖1.4 有限長信號序列的DFT
a)DFT計算圖 b)輸入為直流信號 c)輸入為零相位余弦信號
小測試:復指數e-jπ/2、e-jπ和e(2-j3π/2)的模各是多少?答:前兩個是1,后一個是e2≈7.3。