868 MHz ISM band door opener system signal originally recorded with SDR# at 250 kHz.
Conversion with SoX (http://sox.sourceforge.net/) to float format: sox SDRSharp868961000Hz_IQ.wav sdr1.f32

import numpy as np
import matplotlib.pyplot as plt
##from scipy import signal

## sox SDRSharp868961000Hz_IQ.wav sdr1.f32

samples = np.fromfile('G:\sdr1.f32', np.complex64)
##f = signal.resample(samples, len(samples) * 3)

sample_rate = 0.25e6
center_freq = 868.961e6

##print(type(samples[0]))

psd = np.abs(np.fft.fftshift(np.fft.fft(samples)))**2
dB_psd = 10 * np.log10(psd)
f = np.linspace(sample_rate/-2, sample_rate/2, len(psd))

# time domain
plt.figure(0)
plt.plot(np.real(samples[::100]))
plt.plot(np.imag(samples[::100]))
plt.xlabel("Time")

# freq domain
plt.figure(1)
plt.plot(f/1e6, dB_psd)
plt.xlabel("Frequency [MHz]")
plt.ylabel("PSD")

# psd
plt.figure(2)
plt.psd(samples, NFFT=1024, Fs=sample_rate/1e6, Fc=center_freq/1e6)
plt.ylabel("PSD")

# constellation
plt.figure(3)
plt.plot(np.real(samples), np.imag(samples), '.')
plt.xlabel("Real")
plt.ylabel("Img")
plt.show()

pythonpic1.jpg
https://i.ibb.co/9wnTDtv/pythonpic1.png

pythonpic2.jpg
https://i.ibb.co/qMSsc2W/pythonpic2.png

 

PulseView (https://sigrok.org/wiki/PulseView)

pulseview.jpg
https://i.ibb.co/8gHXzjJ/pulseview.png

pulseview2.jpg
https://i.ibb.co/bHfG2xy/pulseview2.png


Resample trick with Python

import numpy as np
import matplotlib.pyplot as plt

samples = np.fromfile('G:\sdr1.f32', np.complex64)
resamples = np.append(samples, samples)
resamples = np.append(resamples, resamples)

sample_rate = 0.25e6
resample_rate = 1.0e6
center_freq = 869e6

plt.figure(0)
plt.psd(samples, NFFT=1024, Fs=sample_rate/1e6, Fc=center_freq/1e6)
plt.figure(1)
plt.psd(resamples, NFFT=1024, Fs=resample_rate/1e6, Fc=center_freq/1e6)
plt.show()

pytrick.jpg
https://i.ibb.co/wNnd14Z/pytrick.png