MATLAB中的FFT产生矩形的振幅混淆FFT而不是sinc

时间:2016-09-04 23:39:55

标签: matlab fft rect

我在MATLAB中进行FFT。因为我试图做一个矩形的FFT它不会最终成为一个sinc函数。 enter image description here当我尝试纠正我得到的错误时enter image description here这种使用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)))

非常感谢任何帮助。

谢谢,

Ť

1 个答案:

答案 0 :(得分:2)

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只考虑您的输入信号如下。

enter image description here

由于矩形形状距离0指数很远,因此您的FFT会因为某些数学原因而在sinc形状的包络中振荡。