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