Señal compuesta

Señal compuesta

Una señal que se compone de varias señales mas simples se puede manejar como un conjunto de instrucciones por bloques.

Para ello es necesario seleccionar la forma más apropiada para definir cada señal:

  • por bloques def-return
  • en formato de linea lambda

Un escalón es mas sencillo definirlo en formato de línea. Sin embargo, una señal con más partes se recomendaría realizarla por bloques, definiendo su forma más básica para luego poder realizar cambios de escala o desplazamientos en el tiempo.

Ejemplo 1

Referencia: Lathi Ejercicio 1.8 pdf/.65

Demuestre que la señal mostrada en la figura (en libro y al final) puede ser descrita como:

x(t) = (t-1)\mu(t-1) - (t-2)\mu(t-2) - \mu(t-4)

Algoritmo en python

En el ejercicio se presenta una solución por partes, mostrando que la señal se compone de la «suma» de sus partes. Se utiliza la propiedad de la linealidad para los sistemas.

# Señales modelo varias- ejercicio
# propuesta: edelros@espol.edu.ec
import numpy as np
import matplotlib.pyplot as plt
# Función escalón
u = lambda t: np.piecewise(t, t>=0, [1,0])

# INGRESO - tiempos de observaciÓn
a = -2
b = 8
dt = 0.05

# PROCEDIMIENTO
t = np.arange(a, b, dt)

# componentes de la señal
# escalones desplazados
u0 = u(t)
u1 = u(t-1)
u2 = u(t-2)
u4 = u(t-4)
# las partes
x1 =  (t-1)*u1
x2 = -(t-2)*u2

# señal como suma de las partes
x = x1 + x2 - u4
# SALIDA - gráfico
plt.figure(1)

plt.subplot(121)
plt.plot(t, x1, '--', label='(t-1)u(t-1)')
plt.plot(t, x2, '--', label='- (t-2)u(t-2)' )
plt.plot(t, -u4, '--', label='- u(t-4)')
plt.plot(t, x, label='x(t)')
# plt.legend(loc="upper right")
plt.ylabel('x(t) por partes')
plt.xlabel('t')
plt.margins(0.1)

plt.subplot(122)
plt.plot(t, x, label='x(t)')
plt.ylabel('x(t)')
plt.xlabel('t')
plt.margins(0.1)
plt.show()

Ejemplo 2

Referencia: Oppenheim ejemplo 1.1 pdf/p.38

Dada la señal mostrada x(t) (en el libro y la siguiente gráfica), realizar x(t+1), …

Procedemos como en el ejercicio anterior, continuando con el uso de la función escalón μ(t), las partes ahora conforman un bloque def-return.

# continuando en el intervalo de tiempo del ejercicio anterior
def senal(t):
    # componentes de la señal
    u0 = u(t)
    u1 = u(t-1)
    u2 = u(t-2)
    
    x1 = -(t-1)*u1
    x2 =  (t-2)*u2
    
    z = u0 + x1 + x2
    
    return(z)

# INGRESO - tiempos de observaciÓn
a = -2
b = 8
dt = 0.05

# PROCEDIMIENTO
t = np.arange(a, b, dt)

#señal
x = senal(t)
# SALIDA - gráfico
plt.figure(2)
plt.plot(t, u0, '--', label='u(t)')
plt.plot(t, x1, '--', label='- (t-1)u(t-1)' )
plt.plot(t, x2, '--', label='(t-2)u(t-2)')
plt.plot(t, x, label='x(t)')
plt.legend(loc=0)
plt.xlabel('t')
plt.show()


o de gráfica simplificada, solo con el resultado

# SALIDA - gráfico
plt.figure(3)
plt.plot(t, x, label='x(t)')
plt.xlabel('t')
plt.margins(0.1)
plt.show()

Ejercicio

Continuando con el ejercicio anterior, realizar la gráfica:

2x(t+1)

Para el ejercicio, se define el punto donde inicia la señal, y la escala para la amplitud. Para observar los cambios se grafica el desplazamiento y luego el cambio de escala.

# INGRESO 
inicia = -1
escala = 2

xd = senal(t-inicia)
y = escala*senal(t-inicia)

# salida - gráfico
plt.figure(4)
plt.plot(t, x, '--' , label='x(t)')
plt.plot(t, xd, '-.', label='x(t-inicia)')
plt.plot(t, y, label='escala*x(t-inicia)')
plt.xlabel('t')
plt.legend()
plt.margins(0.1)
plt.show()


Tarea

Realice el ejercicio para obtener las gráficas:

  • x(-t+1)
  • x(3t/2)
  • x(3t/2 +1)

Para mejor comprensión del proceso, se recomienda iniciar con un bloque que incluya todas las partes de forma independiente, y asi pueda modificar las instrucciones sin depender de los ejercicios anteriores.

Se adjunta lo recomendado:

# Sección para tarea, 
# se inicia con el último ejemplo

% matplotlib inline
# Señales modelo varias- ejercicio
# propuesta: edelros@espol.edu.ec
# librerias
import numpy as np
import matplotlib.pyplot as plt

# INGRESO - tiempos de observaciÓn
a = -2
b = 3
dt = 0.05

# PROCEDIMIENTO
t = np.arange(a, b, dt)
tescala = 3/2
inicio = 0
yescala = 1

# componentes de la señal
u0 = np.piecewise(t, (t-inicio)>=0, [1,0])
u1 = np.piecewise(t, (t-inicio)>=1, [1,0])
u2 = np.piecewise(t, (t-inicio)>=2, [1,0])

x1 = -((t-inicio)-1)*u1
x2 =  ((t-inicio)-2)*u2

#señal
x = yescala*(u0 + x1 + x2)

# SALIDA - gráfico
plt.figure(5)
plt.plot(t, x, label='x(t)')
plt.xlabel('t')
plt.legend(loc='upper left')
plt.margins(0.1)
plt.show()

Otros ejercicios

Schaum problema 1.22 pdf/p.35

Referencia: Lathi Ejercicio 1.8 pdf/.65, Oppenheim ejemplo 1.1 pdf/p.38, Schaum-Hsu problema 1.22 pdf/p.35

Publicado por

Edison Del Rosario

edelros@espol.edu.ec / Profesor del FIEC/FCNM-ESPOL