在 Fortran 程序中,我使用用户可以选择的给定函数的傅里叶变换。但是用户已经必须编写函数的傅里叶变换。
所以我想以用户只需要提供原始功能的方式扩展程序。在这种情况下,一个高斯函数。为此,我需要进行 FFT。
如果我们有:
h(x)=exp(-t^2)
然后手动傅里叶变换由下式给出
fth(k)=sqrt(pi)*exp(-k.^2/4)
现在如果我做 fft of h(x) 我应该得到 fth(k) 对吗?这是我的代码:
Fs=10;
x=-10:1/Fs:10;
L=length(x);
Nk=2^nextpow2(L);
h=exp(-x.^2);
k=Fs*(1:Nk/2)/Nk;
fth(k)=sqrt(pi)*exp(-k.^2/4);
ffth=fft(h,Nk);
ffth=abs(ffth);
figure
plot(f,ffth(1:Nk/2+1),'r');
hold on
plot(f,fth(1:Nk/2+1),'b');
但为什么我会得到完全不同的东西?