MATLAB 中的 FFT 产生振幅混乱 Rect 的 FFT 不产生 sinc

FFT in MATLAB producing amplitude confusion FFT of rect not making sinc

我正在 MATLAB 中进行 FFT。当我尝试对一个矩形进行 FFT 时,它最终并不是一个 sinc 函数。 instead when I try to correct the error I get 这种使用 abs 的更正我​​在互联网上看到过,但它没有创建 sinc 函数。这是我正在使用的所有代码。

x = linspace(-15,15,257);
x = x(1:256);
y = rectangularPulse(x)
plot(x,y)
Y = fft(y);
plot(x, fftshift(abs(Y)))

如有任何帮助,我们将不胜感激。

谢谢,

T

FFT 不关心输入信号的 x 轴。

只是,像下面这样更改您的代码。

x = linspace(0,30,257);
y = rectangularPulse(x)
figure(1)
plot(y)
Y = fft(y);
figure(2)
plot(fftshift(real(Y)))

通过这段代码,可以看到fft后的sinc函数

在您的原始代码中,FFT 仅将您的输入信号视为如下。

由于 rect shape 离 0 index 有点远,你的 FFT 由于一些数学原因在 sinc 形包络中振荡。