一維高斯核的傅里葉變換


這篇文章是在閱讀Gabor特征總結時,所遇到的關於一維高斯核函數的傅里葉變化問題,在此對其變換過程進行詳細描述。

一維高斯函數的傅里葉變換

問題:
高斯核函數為\(w(t)=e^{-\pi t^2}\)\(\hat w(f)\)為其傅里葉變換,求證:\(\hat w(f)=w(f)\)

證明:
\(w(t)\)代入傅里葉變換式中,可得:

\[\hat w(f)=\int_{-\infty}^{\infty}w(t)e^{-j2 \pi ft} dt \tag{1} \]

\((1)\)式進行下述變換:

\[\begin{split} \hat w(f) &= \int_{-\infty}^{\infty} e^{-\pi t^2} e^{-j2 \pi ft} dt \\ &= \int_{-\infty}^{\infty} e^{-(\pi t^2 + j2 \pi ft)} dt \\ &= \int_{-\infty}^{\infty} e^{-((\sqrt{\pi}t + j \sqrt{\pi} f)^2 + \pi f^2)} dt\\ &= e^{- \pi f^2}\int_{-\infty}^{\infty} e^{-\pi (t + j f)^2} dt \end{split} \tag{2} \]

\((2)\)式中最后一行的積分進行計算:

\[\begin{split} \int_{-\infty}^{\infty} e^{(-\pi t + j f)^2} dt &=\int_{-\infty}^{\infty} e^{(-\pi t + j f)^2} d(t+jf)\\ &= \int_{-\infty}^{\infty} e^{-\pi y^2} dy \end{split} \tag{3} \]

\((3)\)式中積分中的分布進行變換可得:

\[\begin{split} e^{-\pi y^2} &= e^{-\frac{1}{2} \frac{y^2}{(\frac{1}{\sqrt{2 \pi}})^2}} \\ &= N(0,\frac{1}{\sqrt{2 \pi}}) \end{split} \tag{4} \]

\((4)\)可以看出,該式服從\(N(0,\frac{1}{\sqrt{2 \pi}})\)的高斯分布,所以\((3)\)中的積分為\(1\)

將該結果代入到\((2)\)式當中可得:

\[\begin{split} \hat w(f) &= e^{- \pi f^2}\int_{-\infty}^{\infty} e^{(-\pi [t + j f)^2} dt\\ &= e^{- \pi f^2}\\ &= w(f) \end{split} \tag{5} \]

證畢

一維高斯函數的頻域表示相關問題

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)\)當中的幅頻圖。

高斯函數頻域表示隨均值和方差的變化

在查閱文獻的時候,經常能夠看到這樣一句話:高斯函數的傅里葉變換仍然是高斯函數,只是均值和方差不同。在此,將通過實驗說明這一句話。

時域均值變化

根據傅里葉變換的性質:

\[w(t) \leftrightarrow \hat W(f) \\ w(t-u) \leftrightarrow \hat W(f)e^{-j2 \pi ft}\\ \]

可以得到,當高斯函數的均值發生變化時,其頻域表示的幅度不變,只是相位發生變化。
下圖為時域均值為0.1,方差為0.1的時候,所對應的時域圖和幅頻圖:
均值0.1時域

均值0.1頻域

時域方差變化

根據傅里葉變換性質:

\[w(at) \leftrightarrow \frac{1}{|a|} \hat W(\frac{f}{a}) \]

可知,當時域上高斯函數的方差發生變化時,其對應頻域上的高斯分布的方差也發生變化,且時域方差越大,頻域方差越小,反之亦然。
下圖為時域均值為0,方差為1的時候,所對應的時域圖和幅頻圖(需要注意的是,雖然形狀看起來一樣,但是橫坐標的刻度不同):

下圖為時域均值為0,方差為0.01的時候,所對應的時域圖和幅頻圖(需要注意的是,雖然形狀看起來一樣,但是橫坐標的刻度不同):

時域和頻域高斯分布對應的標准差變化

當以\(\sigma_0 = \frac{1}{\sqrt{2 \pi}}\)為單位時,也就是說,將標准差\(\sigma\)表示為\(\sigma = a \cdot \sigma_0\),則有:

\[\begin{split} \sigma_t = \frac{1}{a} \sigma_0 \leftrightarrow \sigma_f = a \sigma_0\\ \sigma_f = a^2 \sigma_t \end{split} \tag{6} \]

又,根據$\sigma_t =\frac{1}{a} \sigma_0 $可得:

\[a = \frac{1}{\sqrt{2\pi} \sigma_t} \tag{7} \]

\((7)\)式代入\((6)\)式當中可得:

\[\sigma_f = \frac{1}{2 \pi \sigma_t} \tag{8} \]

至此,得到了一維高斯函數時域和頻域之間的方差轉換關系。

帶寬和方差的關系

如果,定義頻域的帶寬為\(b=2*3*\sigma\),那么根據式\((8)\)和上述定義可得,帶寬\(b\)和時域方差\(\sigma_t\)之間的關系為:

\[\begin{split} \sigma_f &= \frac{1}{6}b \\ \sigma_t &= \frac{1}{2\pi \sigma_f}\\ &= \frac{3}{\pi b} \end{split} \tag{9} \]

在這種情況下,時域高斯函數隨帶寬的函數可以表示如下:

\[\begin{split} gauss(t) &= \frac{1}{\sqrt{2\pi} \sigma_t}exp(-1/2 \frac{t^2}{{\sigma_t}^2})\\ &= \frac{b}{3}\sqrt{\frac{\pi}{2}} exp(-1/18t^2\pi^2b^2) \end{split} \]

Gabor函數中的梯度大小

\[\begin{split} \frac{\partial g}{\partial b} &= \frac{ \partial }{\partial b} \{ \frac{b}{3}\sqrt{\frac{\pi}{2}} \exp(-1/18t^2\pi^2b^2) \cos(2 \pi f_0 t)\} \\ &= \frac{b}{3}\sqrt{\frac{\pi}{2}} \exp(-1/18t^2\pi^2b^2) \cos(2 \pi f_0 t)\} (-\frac{1}{9}b\pi^2 t^2)\\ & \le -\frac{1}{9}b\pi^2 t^2 \end{split} \tag{10} \]

參考:
fft MATLAB文檔
如何使用matlab進行頻域分析
傅里葉正(反)變換復習
MATLAB中的fft后為何要用fftshift?
Matlab函數——fftshift
fftshift MATLAB文檔


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM