Например, я хочу использовать fft для преобразования простой функции exp(-x.^2)
, определенной во временной области. И соответствующая функция в частотной области
sqrt(pi).*exp(-k.^2/4)
.
И я использую выражение fft , определенное в matlab.
Очевидно, что соответствующая функция в частотной области не может полностью соответствовать real(fftshift(fft(v)))
На самом деле, я хочу напрямую использовать соответствующую функцию в частотной области для вычисления свертки с другой функцией вместо fft (v).
Есть ли способ преобразовать соответствующую функцию в частотной области в fft (v)?
код:
clear all; close all;
L=10; N=64;
x=L/N*[-N/2:N/2-1];
k=2*pi/L*[-N/2:N/2-1];
v=exp(-x.^2);
vt = fft(v);
vt_r = real(fftshift(vt))*L/N;
vt_i = imag(fftshift(vt))*L/N;
vt_ = abs(fftshift(vt))*L/N;
vf = sqrt(pi).*exp(-k.^2/4);
subplot(3,2,1)
plot(x,v,'k','LineWidth',1.5), xlabel x, ylabel v=exp(-x.^2)
subplot(3,2,2)
plot(k,vt_r,'k','LineWidth',1.5)
axis([-max(k) max(k) -2 round(max(vf))]), set(gca,'xtick',[]), ylabel real(fftshift(fft(v)))
subplot(3,2,3)
plot(k,vt_i,'k','LineWidth',1.5)
axis([-max(k) max(k) -2 round(max(vf))]), set(gca,'xtick',[]), ylabel imag(fftshift(fft(v)))
subplot(3,2,4)
plot(k,vt_ ,'k','LineWidth',1.5)
axis([-max(k) max(k) 0 round(max(vf))]), xlabel k, ylabel abs(fftshift(fft(v)))
subplot(3,2,5)
plot(k,vf,'k','LineWidth',1.5)
axis([-max(k) max(k) 0 round(max(vf))]),xlabel k, ylabel vf