예제 #1
0
def do_fft():
    global data, fftdata, fftwin
    if data == None : return
    fftdata = phmath.fft(data)
    xmin = fftdata[0][0]
    xmax = fftdata[-1][0]
    ymin = 0.0
    ymax = 0.0
    for k in range(len(fftdata)):
        if fftdata[k][1] > ymax: ymax = fftdata[k][1]
        if fftdata[k][1] < ymin: ymin = fftdata[k][1]

    other = Toplevel()
    other.title('Fourier Transform Window')
    fftwin = disp(other, WIDTH, HEIGHT,'white')
    fftwin.auto_scale(fftdata)
    fftwin.mark_axes(xlab='Hz', ylab='N')
    f = Frame(other)
    f.pack()
    b1 = Button(f,text = 'Save FFT',command = save_fft)
    b1.pack(side=LEFT)
    b1 = Button(f,text = 'Zoom',command = zoom_fft)
    b1.pack(side=LEFT)
    b1 = Button(f,text = 'Reset',command = reset_fft)
    b1.pack(side=LEFT)
    x = []
    y = []
    fftwin.delete_lines()
    for k in fftdata:
      y.append((k[0],k[1]))
    fftwin.line(y,'red')
예제 #2
0
def do_fft():
    global data, fftdata, fftwin
    if data == None: return
    fftdata = phmath.fft(data)
    xmin = fftdata[0][0]
    xmax = fftdata[-1][0]
    ymin = 0.0
    ymax = 0.0
    for k in range(len(fftdata)):
        if fftdata[k][1] > ymax: ymax = fftdata[k][1]
        if fftdata[k][1] < ymin: ymin = fftdata[k][1]

    other = Toplevel()
    other.title('Fourier Transform Window')
    fftwin = disp(other, WIDTH, HEIGHT, 'white')
    fftwin.auto_scale(fftdata)
    fftwin.mark_axes(xlab='Hz', ylab='N')
    f = Frame(other)
    f.pack()
    b1 = Button(f, text='Save FFT', command=save_fft)
    b1.pack(side=LEFT)
    b1 = Button(f, text='Zoom', command=zoom_fft)
    b1.pack(side=LEFT)
    b1 = Button(f, text='Reset', command=reset_fft)
    b1.pack(side=LEFT)
    x = []
    y = []
    fftwin.delete_lines()
    for k in fftdata:
        y.append((k[0], k[1]))
    fftwin.line(y, 'red')
예제 #3
0
파일: am.py 프로젝트: wavicles/phoenix
"""
Reads a waveform from CH0, plots the wave and it Fast Fourier Transform. Used with Analog Box.
Connect the GND of Phoenix and Analog Box. Connect SG1 out to AM input of SG2. 
Connect SG2 output to CH) through a level shifter. 
"""
import phm, phmath

p = phm.phm()

p.select_adc(0)
p.set_adc_size(1)
data = p.read_block(800, 40, 1)
p.save_data(data, "amwave.dat")
res = phmath.fft(data)
p.save_data(res, "amfft.dat")
p.plot(res)
p.auto_scale(res)
raw_input()  # wait for a Keypress
예제 #4
0
파일: fft_test.py 프로젝트: minrk/phoenix
import phm, phmath
p=phm.phm()

data = p.read_block(800,20,1)
#p.plot(data) ; raw_input()
trans = phmath.fft(data)
size = len(trans)

xmin = trans[0][0]
xmax = trans[-1][0]
ymin = 0.0
ymax = 0.0
for k in range(size):
    if trans[k][1] > ymax: ymax = trans[k][1]
    if trans[k][1] < ymin: ymin = trans[k][1]

print xmin,ymin,xmax,ymax

p.plot(trans)
p.set_scale(xmin,ymin,xmax,ymax*1.1)
raw_input()