MATLAB: Why this fourrier transform is not good

fftfftshiftMATLAB

this script should calculate the fourier transform of a single sine with frequency of 1KHz and for some reason i can't see the pulses in the frequency domain at the -1000 and 1000, please help
clear all
close all
clc
% Downsampling
f_max=1e3;
fs=4e3;
t=linspace(0,1/f_max,fs);
y=sin(2*pi*f_max*t);
frequency_domain=linspace(-fs/2,fs/2,length(t));
figure;
col=4; row=2;
subplot(col,row,1)
plot(t,y)
title('\bf The Original signal')
ylabel('Amplitude')
xlabel('Time')
grid on
subplot(col,row,3)
stem(t,y)
title('\bf The sampled signal')
ylabel('Amplitude')
xlabel('Time')
grid on
% sampled signal in the frequency domain
subplot(col,row,4)
Y=fft(y)/length(y);
Y=fftshift(Y);
plot(frequency_domain,abs(Y))
title('\bf The Original signal in the frequency domain')
ylabel('Magnitude')
xlabel('frequency')
grid on
xlim([-2e3 2e3])

Best Answer

  • Kobi - why is your time domain initialized as
    t=linspace(0,1/f_max,fs);
    Aren't you interested in the full second since fs is the sampling frequency (number of samples per second)? Instead, try
    t = linspace(0,1-1/f_max,fs);
    and see what happens.