Est. read time: 1 minute | Last updated: July 20, 2025 by John Gentile


Contents

Open In Colab

import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
from rfproto import plot, utils
#iq = utils.open_iq_file('./data/ads-b_test_1641427457780.iq', np.int16)
iq = utils.open_iq_file('./data/modes1.bin', np.uint8)
fs = 2.0e6 # sample rate (Hz)
fc = 1.09e9 # ADS-B carrier frequency of 1090 MHz
w = signal.windows.hamming(31)
plot.spectrogram(iq, w, 1024, 64, 20)

png

# Magnitude detect input signal = sqrt(re^2 + im^2)
mag = np.abs(iq)
plot.samples(mag[:512])
plt.show()

png

pulses = np.zeros(512)
for i in range(512):
    if mag[i] > 15:
        pulses[i] = 1

plot.samples(pulses)
plt.show()

png

References