這篇文章是在閱讀Gabor特征總結時,所遇到的關於一維高斯核函數的傅里葉變化問題,在此對其變換過程進行詳細描述。
一維高斯函數的傅里葉變換
問題:
高斯核函數為\(w(t)=e^{-\pi t^2}\),\(\hat w(f)\)為其傅里葉變換,求證:\(\hat w(f)=w(f)\)
證明:
將\(w(t)\)代入傅里葉變換式中,可得:
對\((1)\)式進行下述變換:
對\((2)\)式中最后一行的積分進行計算:
對\((3)\)式中積分中的分布進行變換可得:
由\((4)\)可以看出,該式服從\(N(0,\frac{1}{\sqrt{2 \pi}})\)的高斯分布,所以\((3)\)中的積分為\(1\)。
將該結果代入到\((2)\)式當中可得:
證畢
一維高斯函數的頻域表示相關問題
1)高斯函數FFT變換之后的幅頻圖
根據上述證明所得結論,一維高斯函數的傅里葉變換也是高斯函數,但是在MATLAB或者python當中的繪圖卻會得到下面的結果:
Fs = 100; % Sampling frequency
t = -0.5:1/Fs:0.5; % Time vector
L = length(t); % Signal length
X = 1/(4*sqrt(2*pi*0.01))*(exp(-(t).^2/(2*0.01)));
plot(t,X)
title('Gaussian Pulse in Time Domain')
xlabel('Time (t)')
ylabel('X(t)')
n = 2^nextpow2(L);
Y = fft(X,n);
f = Fs*(0:(n/2))/n;
P = abs(Y/n);
plot(f,P(1:n/2+1))
title('Gaussian Pulse in Frequency Domain')
xlabel('Frequency (f)')
ylabel('|P(f)|')
高斯函數的時域表示:
高斯函數的頻域表示:
在高斯函數的頻域表示圖中,因為信號為實值函數,因此其FFT是對稱的,我們只對其幅頻圖的一半進行繪制。但是在這里出現了一個問題:根據上面的證明,我們知道高斯函數的FFT應該也是高斯函數,為何在此處的實驗當中,我們得到的幅頻圖不是高斯形狀?
解答:根據上述證明,我們可以看出,高斯函數的傅里葉變換也是一個高斯函數,但是,是一個以均值為0的高斯函數,而在幅頻圖中,我們得到的其實是頻域中正頻率的部分,即為高斯函數的一半,因此為實驗所得結果。
如果,直接使用雙邊頻譜進行幅頻圖繪制的話,我們會得到下面的結果:
顯然,這樣的結果是不正確的。
根據上面的分析,可知,如果需要獲得雙邊頻譜,則需要進行頻譜搬移,在MATLAB當中,使用fftshift函數實現。
f1 = Fs*(-(n/2):(n/2)-1)/n;
P = abs(Y/n);
P = fftshift(P);
plot(f1,P)
title('Gaussian Pulse in Frequency Domain')
xlabel('Frequency (f)')
ylabel('|P(f)|')
至此,我們得到了正確的符合公式\((5)\)當中的幅頻圖。
高斯函數頻域表示隨均值和方差的變化
在查閱文獻的時候,經常能夠看到這樣一句話:高斯函數的傅里葉變換仍然是高斯函數,只是均值和方差不同。在此,將通過實驗說明這一句話。
時域均值變化
根據傅里葉變換的性質:
可以得到,當高斯函數的均值發生變化時,其頻域表示的幅度不變,只是相位發生變化。
下圖為時域均值為0.1,方差為0.1的時候,所對應的時域圖和幅頻圖:
時域方差變化
根據傅里葉變換性質:
可知,當時域上高斯函數的方差發生變化時,其對應頻域上的高斯分布的方差也發生變化,且時域方差越大,頻域方差越小,反之亦然。
下圖為時域均值為0,方差為1的時候,所對應的時域圖和幅頻圖(需要注意的是,雖然形狀看起來一樣,但是橫坐標的刻度不同):
下圖為時域均值為0,方差為0.01的時候,所對應的時域圖和幅頻圖(需要注意的是,雖然形狀看起來一樣,但是橫坐標的刻度不同):
時域和頻域高斯分布對應的標准差變化
當以\(\sigma_0 = \frac{1}{\sqrt{2 \pi}}\)為單位時,也就是說,將標准差\(\sigma\)表示為\(\sigma = a \cdot \sigma_0\),則有:
又,根據$\sigma_t =\frac{1}{a} \sigma_0 $可得:
將\((7)\)式代入\((6)\)式當中可得:
至此,得到了一維高斯函數時域和頻域之間的方差轉換關系。
帶寬和方差的關系
如果,定義頻域的帶寬為\(b=2*3*\sigma\),那么根據式\((8)\)和上述定義可得,帶寬\(b\)和時域方差\(\sigma_t\)之間的關系為:
在這種情況下,時域高斯函數隨帶寬的函數可以表示如下:
Gabor函數中的梯度大小
參考:
fft MATLAB文檔
如何使用matlab進行頻域分析
傅里葉正(反)變換復習
MATLAB中的fft后為何要用fftshift?
Matlab函數——fftshift
fftshift MATLAB文檔