#!/usr/pkg/bin/python import sys import Tkinter from math import * from FFT import fft from Numeric import conjugate tk = Tkinter.Tk() xmax, ymax = 128, 128 yscale = float(ymax) / 2 canvas = Tkinter.Canvas(tk, {'height': ymax, 'width': xmax}) canvas.pack() ymidpoint = float(ymax) / 2 sinewave = [] for i in range(0, xmax): samplesine = sin(pi * float(i)/16) canvas.create_line((i, ymidpoint, i, ymidpoint - (yscale * samplesine))) sinewave.append(samplesine) #print repr(sinewave) sinefft = fft(sinewave) print repr(sinefft) powerspectrum = abs(sinefft * conjugate(sinefft)) / len(sinefft) ** 2 for i in range(0, len(powerspectrum)): canvas.create_line((i, ymidpoint, i, ymidpoint - yscale * powerspectrum[i]), {'fill': 'red'}) tk.mainloop()