# Su respuesta aquí
from scidQPSK import make_QPSK, encode_QPSK_waveform, add_noise
from scipy.signal import remez
from PIL import Image
fs = 8 #
fc = 1 #
N = 120
fw = 1.5
M = 14 #
Ex = 4 #
SNR = 15 #
# Leemos los bits de la imagen cat.png
with open('cat.png', 'rb') as f:
cat_bs = BitStream(f.read())
# Codificamos con QPSK
x = encode_QPSK_waveform(cat_bs, M , Ex)
# Añadimos el delay
yd = delay_QPSK_waveform(x, N/2)
# Modulamos la señal (yd= x con ruido con delay)
xm = modulate_IQ(yd, fc, fs)
# Añadimos ruido
yr = add_noise(xm, SNR)
# Demodulamos la señal
xd = demodulate_IQ(yr, fc, fs, N, fw)
# Decodificamos QPSK
cat_rx = decode_QPSK_waveform(xd, M, Ex)
# cat_bytes = cat_rx.tobytes()
# # Escribimos los bits recibidos en cat_rx.png
# with open('cat_rx.png', 'wb') as f:
# f.write(cat_rx.read(bytes))
# Obtener los bytes del bitstream recibido
bytes_data = cat_rx.tobytes()
# Crear un objeto BytesIO y escribir los bytes en él
bytes_io = io.BytesIO()
bytes_io.write(bytes_data)
bytes_io.seek(0)
# Abrir la imagen desde BytesIO
image = Image.open(bytes_io)
# Guardar la imagen en formato PNG
image.save('cat_rx.png')
# Modulamos la señal