28 lines
600 B
Python
28 lines
600 B
Python
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
import scipy as sp
|
|
from rtlsdr import RtlSdr
|
|
import asyncio
|
|
import dsp
|
|
|
|
class Spectrum(Display):
|
|
def __init__(self):
|
|
pass
|
|
|
|
def put(self, samples):
|
|
self.buffer.put(samples)
|
|
|
|
def update(self):
|
|
samples = self.buffer.get()
|
|
spectrum = np.abs(sp.fft.fftshift(sp.fft.fft(samples)))**2
|
|
spectrum_db = dsp.db(spectrum)
|
|
self.ax.clear()
|
|
self.ax.plot(spectrum_db)
|
|
|
|
self.ax.relim()
|
|
self.ax.autoscale_view()
|
|
|
|
self.fig.canvas.draw()
|
|
self.fig.canvas.flush_events()
|
|
|