如何进行傅里叶变换和逆傅里叶变换来进行时间缩放?

问题描述 投票:0回答:0
Fs = 10;
Ts = 1/Fs;
t0 = 1;
t = -50:Ts:50-Ts;
x = exp(-(t/t0).^2);
y = exp(-(t/10).^2);
subplot(2,2,1)
plot(t,x)
title('Gaussian Pulse in Time Domain (1ps)')
xlabel('Time (ps)')
ylabel('Amplitude')

X = fft(x);
N = length(x);
%fX = Fs*(0:N-1)/N;
Delay = -4;

XS = fftshift(X);
fXS = (-N/2:N/2-1)*(Fs/N); 
powerXS = abs(XS);
subplot(2,2,2)
plot(fXS,powerXS)
title('Gaussian Pulse in Frequency Domain (1ps)')
xlabel('Frequency (Hz)')
ylabel('Magnitude')

XSB = (XS./sqrt(pi)).^100.*sqrt(pi).*10;
powerXSB = abs(XSB);
subplot(2,2,3)
plot(fXS,powerXSB)
title('Time Scaling (10ps) (Frequency Domain)')
xlabel('Frequency (Hz)')
ylabel('Magnitude')

XSBI = ifft(XSB);
powerXSBI = abs(XSBI);
subplot(2,2,4)
plot(t,powerXSBI)
title('Inverted Fourier Transfrom (Time Scaling)(10ps)(Time Domain)')
xlabel('Time (ps)')
ylabel('Amplitude')

The problem 我无法完成问题 1b。 我想我做的大部分事情都是正确的,但是高斯脉冲的倒傅立叶变换并不以 t=0 为中心。我不知道那是怎么发生的。 代码是用matlab写的。

我试过直接fft(y),发现numders和XSB一样。但是 fft(y) 的数字在两边,XSB 的数字在中间。

matlab fft matlab-figure
© www.soinside.com 2019 - 2024. All rights reserved.