Fortran プログラムでは、ユーザーが選択できる特定の関数のフーリエ変換を使用しています。しかし、ユーザーはすでに関数のフーリエ変換を作成する必要があります。
そのため、ユーザーが元の機能を提供するだけでよい方法でプログラムを拡張したいと考えました。この場合はガウス関数です。これを行うには、FFT を実行する必要があります。
私たちが持っている場合:
h(x)=exp(-t^2)
フーリエ変換は次の式で与えられます。
fth(k)=sqrt(pi)*exp(-k.^2/4)
h(x) の fft を実行すると、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');
しかし、なぜ私はまったく違うものを手に入れるのでしょうか?