高斯函数的Matlab快速傅里叶变换
我试图通过使用matlab的fft获得高斯曲线。问题是,在一种情况下,我试图通过除以高斯函数的Matlab快速傅里叶变换,matlab,fft,Matlab,Fft,我试图通过使用matlab的fft获得高斯曲线。问题是,在一种情况下,我试图通过除以F=dt.*F./exp(-1i.*nu.*T/2)来降低噪声的方法不起作用(img1),而在第二种情况下,如果我试图获取fft结果的绝对值,我在图中没有合适的比例(img2) img 1 img2 您的解析傅里叶变换公式中的比例似乎不太正确。根据该方法,对连续时域信号进行变换 t=linspace(-5,5,N); f=exp(-t.^2); 是 在您的情况下,a=1。相应地,您应该比较时域信号的FFT
F=dt.*F./exp(-1i.*nu.*T/2)
来降低噪声的方法不起作用(img1),而在第二种情况下,如果我试图获取fft结果的绝对值,我在图中没有合适的比例(img2)
img 1
img2
您的解析傅里叶变换公式中的比例似乎不太正确。根据该方法,对连续时域信号进行变换
t=linspace(-5,5,N);
f=exp(-t.^2);
是
在您的情况下,a=1
。相应地,您应该比较时域信号的FFT
t=linspace(-5,5,N);
f=exp(-t.^2);
用解析傅里叶变换
F2 = sqrt(pi)*exp(-(pi*y).^2);
因此,用以下公式绘制比较:
hold off;
plot(y,F2);
hold on;
plot(nu,abs(F),'r');
legend('analiticFT','FFT')
xlim([-5 5])
收益率:
现在我们已经建立了一个适当的比较基础,我们可以看看为什么在img1
中会出现振荡。简单地说,参考高斯脉冲f=exp(-t.^2)您生成的代码>在t=0处有一个峰值。相应的“零”离散时间瞬间自然是数组中的第一个索引(索引1)。但是,在数组中,此峰值出现在索引N/2
处。在下,这会在频域中产生一个额外的exp(-pi*j*k)
项,负责您看到的振荡。要解决此问题,您应该使用ifftshift
:
F=fftshift(fft(ifftshift(f)));
请注意,当您为变量指定有意义的名称时,帮助您会容易得多。(注2:为了实现F1和F2的功能,您可以调用fftshift(F)
)您的意思是什么?