我在matlab上做了一个阶梯函数FFT,但只获得了光谱的一侧(0到无穷大)

时间:2013-10-31 22:37:18

标签: matlab fft

使用这个代码我只得到fft光谱从0到正无穷大的一半。我试图沿着y轴反映这一点,以获得另一半与0到负无穷大对称的另一半。

    Fs = 1000;   %sampling rate
    Ts = 1/Fs; %sampling time interval
    t = -10:Ts:10-Ts; %sampling period
    n = length(t); %number of samples
    y = heaviside(t)-heaviside(t-4); %the step curve

    matlabFFT = figure;  %create a new figure
    YfreqDomain = fft(y); %take the fft of our step funcion, y(t)
    y=abs(YfreqDomain);
    plot(y)
    xlabel('Sample Number')
    ylabel('Amplitude')
    title('Using the Matlab fft command')
    grid
    axis([-100,100,0,5000])

1 个答案:

答案 0 :(得分:2)

这是正常行为。 FFT仅以正频率返回频谱(在0和Fs之间)。您可以使用fftshift进行更正。然后,零频率将位于x轴的中心。所以你应该使用

plot(fftshift(y))
axis([-100+1e4,100+1e4,0,5000])

enter image description here