Я изучаю IFFT в Matlab, применяя его к Gaussian. Согласно таблицам Википедии пара преобразования Фурье будет
F(w) = sqrt(pi/a) * exp(-w^2/(4a))
по частоте, и
f(t) = exp(-at^2)
во время. Я изменил код в предыдущем вопросе плюс Ответ Криса Луенго на выполнение этого IFFT.
a = 0.333;
ts = 1e4; % time sampling
L = 1000*ts; % no. sample points
ds = 1/ts;
f = -floor(L/2):floor((L-1)/2); % freq vector
f = f/ts;
w = 2*pi*f; % angular freq
Y = sqrt(pi/a)*exp(-w.^2/(4*a));
y = ts*ifftshift(ifft(fftshift(Y)));
t = (-L/2:L/2-1)*ts/L; % time vector
f = exp(-a*t.^2); % analytical solution
figure; subplot(1,2,1); hold on
plot(t,real(y),'.--')
plot(t,real(f),'-')
xlabel('time, t')
title('real')
legend('numerical','analytic')
xlim([-5,5])
subplot(1,2,2); hold on
plot(w,imag(y),'.--')
plot(w,imag(f),'-')
xlabel('time, t')
title('imag')
legend('numerical','analytic')
xlim([-5,5])
Когда я сравниваю результат IFFT с аналитическим выражением, они, похоже, не согласны:
Я не уверен, в чем ошибка. Правильно ли я масштабировал IFFT? Есть ли ошибка в том, как я определяю линейную / угловую частоту?
Изменить: По какой-то причине, когда я определяю L=ts^2
, аналитические и численные решения, похоже, совпадают (L
= количество точек выборки, ts
= выборка времени).