Está en la página 1de 22

Presentación trabajo 3

Franco Aguirre, Patricio Escobar,


Bastian Rivera, Vicente Riveros y Matias Leiva

Departamento de Ingenierı́a Eléctrica


Universidad de Santiago de Chile

27 de enero del 2021

sm.

Grupo 9 (USACH) Presentación trabajo 3 27 de enero del 2021 1 / 22


Índice

1 Introducción

2 Descripción del trabajo

3 Códigos del trabajo

4 Enlaces

5 Conclusión

sm.

Grupo 9 (USACH) Presentación trabajo 3 27 de enero del 2021 2 / 22


Introducción.

En esta ocasión mostraremos como se resolvió la problemática


presentada para el trabajo número 3

El trabajo consiste en generar los códigos necesarios para transmitir


tres señales a traves de un ”canal” para luego filtrar y obtener solo
una de estas señales, obteniendo el tren de bits especificado.

sm.

Grupo 9 (USACH) Presentación trabajo 3 27 de enero del 2021 3 / 22


Descripción del trabajo

Se nos entrega un tren de bits que debe ser transmitido. (Info)


El nivel de ruido presente en el canal. (Noise)
El valor de la frecuencia portadora a la que se realice la transmisión. (FP)
Velocidad de transferencia.(Bps)

Info Noise[dBm] FP[Hz] Bps


10000010 3.3 200 100
Cuadro: valores asignados al grupo 9

sm.

Grupo 9 (USACH) Presentación trabajo 3 27 de enero del 2021 4 / 22


Descripción del trabajo

imagen de esquema para la transmisión, sacada de la presentación del trabajo 3

sm.

Grupo 9 (USACH) Presentación trabajo 3 27 de enero del 2021 5 / 22


librerı́as a utilizar

1 import numpy as np
2 import matplotlib.pyplot as plt
3 from scipy.fftpack import fft
4 from scipy import signal

sm.

Grupo 9 (USACH) Presentación trabajo 3 27 de enero del 2021 6 / 22


Función trenBits

1 def trenBits(cadenaString, Amp, bps, fs):


2 largoBit = fs/bps
3 tren = np.array([])
4 for a in cadenaString:
5 cont = largoBit
6 while(cont>0):
7 tren = np.append(tren,int(a))
8 cont = cont-1
9 t = np.linspace(0,len(cadenaString)*(1/bps),len(tren))
10 tren = Amp*tren
11 return t,tren

sm.

Grupo 9 (USACH) Presentación trabajo 3 27 de enero del 2021 7 / 22


Definición de Datos

1 bps = 100 #Bits por segundo. Dato entregado en el problema


2 fs = 5000 #Frecuencia de muestreo
3 bits1 = "10000010" #Tren de bits entregado en el problema
4 bits2 = "00100110"
5 bits3 = "00011000"
6 Amp1 = 20 #Las amplituddes fueron estimadas por ...
nosotros mismos
7 Amp2 = 20 #Si se e l e g a una amplitud muy grande, el ...
ruido no a f e c tar a a las s e a l e s
8 Amp3 = 20
9 t1,b1 = trenBits(bits1, Amp1, bps, fs) #APLICACI N DE ...
F U N C I N TREN DE BITS#
10 t2,b2 = trenBits(bits2, Amp2, bps, fs)
11 t3,b3 = trenBits(bits3, Amp3, bps, fs)
12 fPC = 200 #Valor de la frecuencia portadora en Hertz

sm.

Grupo 9 (USACH) Presentación trabajo 3 27 de enero del 2021 8 / 22


Función MagFourier

1 def MagFourier(matriz,fs):
2 n = np.size(matriz)
3 fr = (fs/2)*np.linspace(0,1,int(n/2))
4 X = fft(matriz)
5 X m = (2/n)*abs(X[0:np.size(fr)])
6 return fr, X m

sm.

Grupo 9 (USACH) Presentación trabajo 3 27 de enero del 2021 9 / 22


Función moduladora

1 def moduladora(tren, s e a l ,fs,bps,fp,phip):


2 t = ...
np.linspace(0,len(tren)*(1/bps),int((fs/bps)*len(tren))
3 portadora = np.sin(2*np.pi*fp*t+phip)
4 mod = s e a l *portadora
5 return t, mod

sm.

Grupo 9 (USACH) Presentación trabajo 3 27 de enero del 2021 10 / 22


Aplicación de función moduladora y Magfourier

1 """Para el primer tren de bits"""


2 phip1 = 0
3 fp1 = fPC
4 tp1,mod1 = moduladora(bits1,b1,fs,bps,fp1,phip1)
5 frp1,X mp1 = MagFourier(mod1,fs)
6 """Para el segundo tren de bits"""
7 phip2 = 0
8 fp2 = fPC-(fPC*0.7)
9 tp2,mod2 = moduladora(bits2,b2,fs,bps,fp2,phip2)
10 frp2,X mp2 = MagFourier(mod2,fs)
11 """Para el tercer tren de bits"""
12 phip3 = 0
13 fp3 = fPC+(fPC*0.7)
14 tp3,mod3 = moduladora(bits3,b3,fs,bps,fp3,phip3)
15 frp3,X mp3 = MagFourier(mod3,fs)

sm.

Grupo 9 (USACH) Presentación trabajo 3 27 de enero del 2021 11 / 22


Función ruido

1 def ruido( s e a l ,sigma):


2 noise = np.random.normal(0,sigma,len( s e a l ))
3 se alSucia = s e a l +noise
4 return se alSucia

sm.

Grupo 9 (USACH) Presentación trabajo 3 27 de enero del 2021 12 / 22


Suma de las tres señales y ruido

1 """Suma de las tres s e a l e s """


2 canal = mod1+mod2+mod3
3 frc,X mc = MagFourier(canal,fs)
4 #APLICACI N F U N C I N RUIDO#
5 se alSucia = ruido(canal,3.3) # S e a l total, amplitud ...
(Valor dado)

sm.

Grupo 9 (USACH) Presentación trabajo 3 27 de enero del 2021 13 / 22


Función Filtro

1 def filtro( s e a l ,M,fss,fc):


2 sos = signal.butter(M,fc,"bandpass",fs = ...
fss,output="sos")
3 b,a = signal.butter(M,fc,"bandpass",analog=True)
4 w,h = signal.freqs(b,a)
5 h = 20*np.log10(abs(h))
6 se alFiltrada = signal.sosfilt(sos, s e a l )
7 return se alFiltrada ,w,h

sm.

Grupo 9 (USACH) Presentación trabajo 3 27 de enero del 2021 14 / 22


Aplicación del filtro

1 """FILTRO"""
2 M1 = 3 #Valor para la funcion que se da a su nivel.
3 #A mayor valor depura en mayor cuantia, es decir, filtra ...
m s
4 #Frecuencias a las que el filtro pasabanda corta y ...
filtra la s e a l :
5 fcorte1 = 150
6 fcorte2 = 260
7 filtrada1,wf,hf = ...
filtro(se alSucia ,M1,fs,(fcorte1,fcorte2))
8 frS,X mS = MagFourier(se alSucia ,fs)
9 frF,X mF = MagFourier(filtrada1,fs)

sm.

Grupo 9 (USACH) Presentación trabajo 3 27 de enero del 2021 15 / 22


Ploteo gráfico 3x3 I

1 # G R F I C O DE 3x3 DONDE SE MUESTRAN LOS TRENES DE BITS#


2 plt.figure(1)
3 plt.suptitle(" S e a l e s de Informaci n")
4 plt.subplot(3,3,7)
5 plt.ylabel("Amplitud (mV)")
6 plt.semilogx(frp1,X mp1)
7 plt.subplot(3,3,8)
8 plt.xlabel("Frecuencia (Hz)")
9 plt.semilogx(frp2,X mp2)
10 plt.subplot(3,3,9)
11 plt.semilogx(frp3,X mp3)
12 plt.subplot(3,3,4)
13 plt.ylabel("Amplitud (mV)")

sm.

Grupo 9 (USACH) Presentación trabajo 3 27 de enero del 2021 16 / 22


Ploteo gráfico 3x3 II

1 plt.plot(tp1,mod1)
2 plt.subplot(3,3,5)
3 plt.xlabel("Tiempo (seg)")
4 plt.plot(tp2,mod2)
5 plt.subplot(3,3,6)
6 plt.plot(tp3,mod3)
7 plt.subplot(3,3,1)
8 plt.ylabel("Amplitud (mV)")
9 plt.plot(t1,b1)
10 plt.subplot(3,3,2)
11 plt.xlabel("Tiempo (seg)")
12 plt.plot(t2,b2)
13 plt.subplot(3,3,3)
14 plt.plot(t3,b3)

sm.

Grupo 9 (USACH) Presentación trabajo 3 27 de enero del 2021 17 / 22


Ploteo suma de señales

1 # G R F I C O DE 2x1 DONDE SE MUESTRA LA SUMA DE LAS ...


S E A L E S EN EL TIEMPO Y EN LA FRECUENCIA#
2 plt.figure(2)
3 plt.suptitle(" S e a l a la salida del transmisor")
4 plt.subplot(2,1,1)
5 plt.plot(tp3,canal)
6 plt.subplot(2,1,2)
7 plt.semilogx(frc,X mc)

sm.

Grupo 9 (USACH) Presentación trabajo 3 27 de enero del 2021 18 / 22


Ploteo canal de transmisión

1 # G R F I C O DE 2x1 DONDE SE MUESTRA LA S E A L CON EL RUIDO ...


EN EL TIEMPO Y EN LA FRECUENCIA#
2 plt.figure(3)
3 plt.suptitle(" S e a l en el Canal")
4 plt.subplot(2,1,1)
5 plt.plot(tp3,se alSucia)
6 plt.subplot(2,1,2)
7 plt.semilogx(frS,X mS)

sm.

Grupo 9 (USACH) Presentación trabajo 3 27 de enero del 2021 19 / 22


Ploteo señal filtrada

1 # G R F I C O DE 2x1 DONDE SE MUESTRA LA S E A L YA FILTRADA ...


EN EL TIEMPO Y EN LA FRECUENCIA#
2 plt.figure(4)
3 plt.suptitle(" S e a l Filtrada")
4 plt.subplot(2,1,1)
5 plt.plot(tp3,filtrada1)
6 plt.subplot(2,1,2)
7 plt.semilogx(frF,X mF)

sm.

Grupo 9 (USACH) Presentación trabajo 3 27 de enero del 2021 20 / 22


Enlaces

Para ver el codigo completo haga click aquı́


Para ver el video de la presentación haga click aquı́
Para ver las Imágenes resultantes de las señales del trabajo haga click aquı́

sm.

Grupo 9 (USACH) Presentación trabajo 3 27 de enero del 2021 21 / 22


Conclusión
Gracias a este trabajo aprendimos cómo funcionan los filtros además
de implementarlos de una forma práctica, y si bien no pudimos
realizar el filtro IIR por su complejidad aprendimos a cómo deberı́a
funcionar de forma teórica.

sm.

1 plt.show()
Grupo 9 (USACH) Presentación trabajo 3 27 de enero del 2021 22 / 22

También podría gustarte