一维高斯核的傅里叶变换


这篇文章是在阅读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