0

このコードでは、0 から正の無限大までの fft スペクトルの半分しか得られません。これを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])
4

1 に答える 1

2

それは正常な動作です。FFT は、正の周波数 (0 ~ Fs の間) のみのスペクトルを返します。を使用fftshiftしてそれを修正できます。ゼロ周波数は x 軸の中心になります。だからあなたは使うべきです

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

ここに画像の説明を入力

于 2013-10-31T22:46:43.377 に答える