SAR成像基礎知識急救箱(二)關於離散傅里葉變換

1 離散傅里葉變換


font face=”Times New Roman” color=black size=4>
不加證明的給出以下結論:

  • 連續周期函數的傅里葉變換對應離散頻譜;
  • 連續非周期函數的傅里葉變換對應連續頻譜;
  • 離散(可以認爲是上一種情況採樣後的結果)非周期函數的傅里葉變換對應連續頻譜(這個聽起來很不可思議,但是都是公式推出來的結果,這種情況有一個專門的名字,叫離散時間傅里葉變換,DTFT);
  • 離散周期函數的傅里葉變換對應離散週期頻譜。

以上都可以用公式進行推導,此處省去。有個規則可以幫助我們理解上面的結論:時域的離散(採樣)對應頻域的重複;時域的重複(週期)對應頻域的離散。且一個域的週期對應對應另一個域的採樣間隔。
現在並沒有涉及到離散傅里葉變換(DFT),它是在上面提到的第四種情況的基礎上稍微擴展得到的。因爲實際中遇到的信號是有限長度,並不會是週期的,但是呢,我們可以把它看成是某一個周期函數的一個週期,然後,我們也在頻域中找到一個週期。離散傅里葉變換就是用來描述這一有限長度時域信號和同等長度的頻域信號的對應關係的。
這個正變換及其對應的圖形表示如下:


離散傅里葉正變換及示意圖 (來源matlab)

注意圖中一個域中的間隔和另一個域中的長度範圍的對應關係。
離散傅里葉變換的意義是什麼呢?可以說意義非常巨大,因爲提出離散傅里葉變換之前,這個變換只是在理論上有意義,實際應用並不怎麼樣,因爲現實中我們要處理的信號都是離散的且有限長度。
一般用快速傅里葉變換進行離散傅里葉變換。

2 補零


由於離散信號的離散時間傅里葉變以2π  爲週期,對一個週期取N個頻率樣本即爲對應的離散傅里葉變換,因此利用DFT計算的離散頻譜的分辨率,即樣本之間的間隔,爲:
ΔΩ=2πN  

注意上面的間隔的單位爲弧度(對應相位),不是弧度每秒。上式說明樣本數決定了頻譜的分辨率。反之亦然,頻譜要求的分辨率決定了樣本數。
時域的補零對應頻域頻譜變密;頻域的補零對應時域的樣本變密。注意根據上面圖中的關係,如果一個域中的間隔不變,另一個域中的範圍就不變。
下面的代碼可以說明這一點:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%這個說明了頻域的補零對應時域的插值 

asc = 0:30:330; 
dec = [408 89 -66 10 338 807 1238 1511 1583 1462 1183 804];

d = fftshift(fft(fftshift(dec.'))).';
d = [d,zeros(1,400)];           %補零
d = fftshift(ifft(fftshift(d.'))).';

subplot(1,2,1)
plot(asc,abs(dec))

subplot(1,2,2)
a = linspace(0,330,412); %注意既然頻域的間隔沒有變 那麼時域的範圍也就沒有變化
plot(a,abs(d))

執行結果爲:


3 離散傅里葉變換的兩個應用


近似計算傅里葉變換步驟:
1、針對特定需求確定DFT所需的分辨率:
ΔΩ=ΔωT=2πN  

2、確定抽樣時間間隔T:
Δω s =2πT >2Δω M  

其中ω M   爲連續時間信號的最高頻率分量。(現在我有一個疑問:對於某一個我不知道規律的信號,我還沒有進行傅里葉變換,我怎麼知道最高頻率分量,我怎麼確定採樣間隔,我怎麼進行DFT?)
3、然後在NT秒的時間段內採集連續時間信號的N個樣本。(這裏N可能會根據不同的算法略有不同)。
4、計算DFT。
執行完以上步驟所得到的DFT的結果應是連續時間信號傅里葉變換的良好近似。

下面的代碼實現了矩形脈衝信號的傅里葉變換:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%一方面說明了利用DFT近似計算傅里葉變換
%另一方面說明了時域的補零對應了頻域的內插 雖然頻域的樣本數增多了但是樣本間隔縮小了,整體的頻率範圍沒有變
T2 = [0:0.1:1.9]; 
%我們知道矩形脈衝的頻譜是sinc函數,這個採樣間隔是第一個零值點頻率的10倍

xs = rectpuls(T2-0.5);
subplot(2,3,1);
stem(xs);

Xs = fft(xs);
subplot(2,3,2);
stem(abs(Xs));
Xks = fftshift(Xs);
subplot(2,3,3);
stem(abs(Xks));

m = zeros(1,108);
xs = [xs,m];%快速傅里葉變換前進行補零 也可以不補零
subplot(2,3,4);
stem(xs);

Xs = fft(xs,128);
subplot(2,3,5);
stem(abs(Xs));
Xks = fftshift(Xs);
np = [-64:63];
subplot(2,3,6);
stem(np, abs(Xks));
執行結果爲:


利用離散傅里葉變換計算線性卷積
另外可以利用離散傅里葉變換計算線性卷積,前提是需要對兩個序列(長度分別爲N1和N2)分別補零至N1+N2-1。(爲什麼匹配濾波的時候沒有
補零呢?因爲那是循環卷積,這是兩種不同的的運算。)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章