Modelo:
Donde:
: señal transmitida
: señal recibida
: señal de ruido
: coeficiente de atenuación
: retardo
from prbs.prbs import prbs
from scipy.signal import correlate
from numpy.random import normal
from numpy import hstack, zeros
import matplotlib.pyplot as plt
%matplotlib widgetx= prbs(1000, 12) # señal pseudo aleatoria binaria
x[x==0]=-1
rxx=correlate(x,x) # autocorrelacion de x(n)
Ex=sum(x**2) # energia de la señal x(n)
print(f"La energía de la señal es {Ex}")
f,ax=plt.subplots(2,1)
ax[0].plot(x)
ax[0].set_ylabel(r'$x(n)$')
ax[0].set_xlabel(r'indice $n$" ')
ax[1].plot(rxx)
ax[1].set_ylabel(r'rxx($l$)')
ax[1].set_xlabel(r'indice $l$ ')
for i in ax:
i.grid()
f.tight_layout()La energía de la señal es 1000
Loading...
alpha=0.3; # coeficiente de atenuacion
w=normal(0, 1, (1000,)) # ruido blanco Gaussiano de media 0 y desviación standard unidad
f,ax=plt.subplots(1,1)
ax.plot(w)
ax.set_ylabel(r'w($n$)')
ax.set_xlabel(r'indice $n$ ')
ax.grid()
f.tight_layout()Loading...
y=alpha * hstack((zeros((100, ), dtype=int), x[0:-100]))+w # señal recibida
Ey=sum(y**2) # energia de la señal x(n)
print(f"La energía de la señal es {Ey}")
f,ax=plt.subplots(1,1)
ax.plot(y)
ax.set_ylabel(r'y($n$)')
ax.set_xlabel(r'indice $n$ ')
ax.grid()
f.tight_layout()La energía de la señal es 1006.2289926151334
Loading...
ryx = correlate(y,x) # correlacion cruzada
f,ax=plt.subplots(1,1)
ax.plot(ryx)
ax.set_ylabel(r'ryx($l$)')
ax.set_xlabel(r'indice $l$ ')
ax.grid()
f.tight_layout()Loading...
Instalación del paquete generador de señales prbs¶
Es un paquete que está en una etapa muy temprana de desarrollo, por lo que se encuentra en un ‘repositorio’ de pruebas de paquetes de python. Para instalarlo puede usar el siguiente comando:
python -m pip install -i https://test.pypi.org/simple/ prbs-generatorEl código lo pueden encontrar en un repositorio de Gitlab siguiendo este link