NumPy

FFT

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()

FFT

dsp/numpy.txt · Last modified: 2010/08/10 (external edit)
CC Attribution-Noncommercial-Share Alike 3.0 Unported
Valid CSS Driven by DokuWiki Recent changes RSS feed Valid XHTML 1.0