ffttest.py

ffttest.py — Python Source, 0Kb

ファイルコンテンツ

import scipy
import scipy.fftpack as fft
import pylab

L = 128
U = 1./8
UL = int(L*U)

print 'FFT Demo'
print """Please select:
  1. One sided rectangular function
  2. Folded symmetrical rectangular function
  3. Symmetrical Trapezoid function
"""
ans = input()

X = range(L)
if ans == 1:
    f = scipy.array([1.0]*UL+[0.0]*(L-UL))
elif ans == 2: ### folding
    f = scipy.array([1.0]*(UL/2)+[0.0]*(L-UL+1)+[1.0]*(UL/2-1))
else: ### non-sharp cutoff
    S = [2./UL*i for i in range(UL/2)]
    SR = S[:]
    SR.reverse()
    f = scipy.array([1.0]*(UL/4)+SR+[0.0]*(L-UL-UL/2+1)+S+[1.0]*(UL/4-1))

pylab.subplot(211)
pylab.plot(X,f, '-', label='Original Function')
pylab.legend(('Original Function',))

pylab.subplot(212)
F = fft.fft(f)
pylab.plot(X,F.real, '-', label='FFT Real part')
pylab.plot(X,F.imag, '-', label='FFT Imaginary part')
pylab.legend(('Real Part', 'Imaginary Part'))
pylab.title('FFT')
pylab.show()