from pylab import *
def FFT(fs, x):
fs_2 = fs/2
freq = arange(-fs_2, fs_2)
val = abs(fftshift(fft(x)))/fs_2
zero = len(freq)/2
return (freq[zero:], val[zero:])
if __name__ == '__main__':
# Sampling frequency
fs = 44100 # Hz
# Signal: (1)sec at (1/fs) samples
t = arange(0,1, 1.0/fs)
s1 = 1.0 * sin(2*pi * 5000 * t) # 5 KHz
s2 = 0.5 * sin(2*pi * 9000 * t) # 9 KHz
s3 = 0.7 * sin(2*pi * 17000 * t) # 17 KHz
x = s1 + s2 + s3
# FFT
fft_data = FFT(fs, x)
# Plot
plot(*fft_data)
grid()
show()