aq6140/fourier.py

40 lines
835 B
Python

import PyQt5
import pyqtgraph as pg
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
from scipy.signal import hilbert
from scipy.fft import fft, fftfreq
from scipy.signal.windows import hamming
a = 250000
b = 450000
ch1 = np.load("siglent_ch1.npy")[a:b]
ch2 = np.load("siglent_ch2.npy")[a:b]
ch1 = ch1 - np.mean(ch1)
ch2 = ch2 - np.mean(ch2)
out_samples = []
prev_ref = ch1[0]
for sample, ref in zip(ch1, ch2):
if prev_ref*ref < 0:
out_samples.append(sample)
prev_ref = ref
app = QtGui.QApplication([])
mainwindow = QtGui.QMainWindow()
widget = pg.PlotWidget()
mainwindow.setCentralWidget(widget)
mainwindow.show()
out_samples = out_samples*hamming(len(out_samples))
widget.clear()
widget.plot(2*473.6*fftfreq(len(out_samples))[:len(out_samples)//2], np.abs(fft(out_samples))[:len(out_samples)//2])
app.exec_()