Как заставить функцию во временной области после fft соответствовать соответствующей функции в частотной области? - PullRequest
0 голосов
/ 11 января 2019

Например, я хочу использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...