1.8 Señales - desplazamiento. escalamiento o inversión en tiempo



Referencia: Oppenheim 1.2.1 p8 pdf39, Lathi 1.2-1 p71

1. Desplazamiento en tiempo de señales

Una señal x(t) que se retrasa por k segundos se representa como una versión desplazada hacia la derecha el eje t.

Es decir:

\phi (t+k)= x(t)

o de otra forma:

\phi (t)= x(t-k)

se podrá observar entonces que el signo determina el desplazamiento hacia:

  • la derecha si se resta k
  • la izquierda si se suma k

Para mostrar las reglas, se tiene el siguiente ejemplo, usando como señal

x(t)=sen(t)
señal desplaza en tiempo gráfico animado
señal desplazada en tiempo

Algoritmo en Python

# Señales- Operaciones desplazamiento
import numpy as np

# INGRESO
w  = 1  # frecuencia
k  = 1  # desplazamiento
fx = lambda t: np.sin(w*t)

a  = -8 # intervalo de tiempo [a,b)
b  = 8
dt = 0.1 # tamaño de paso

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

senal     = fx(ti)
derecha   = fx(ti-k)
izquierda = fx(ti+k)

# SALIDA
import matplotlib.pyplot as plt
plt.figure(1)
plt.plot(ti,senal,label='x(t)')

plt.plot(ti,derecha,
         label='derecha : x(t-k)',
         linestyle='dashed')
plt.plot(ti,izquierda,
         label='izquierda: x(t+k)',
         linestyle='dashed')

plt.axvline(0, color='gray')
plt.axhline(0, color='gray')
plt.xlabel('t')
plt.legend(loc='lower left')
plt.grid()

plt.show()


2. Escalamiento en tiempo de señales

La compresión o expansión de la señal en el tiempo es conocida como escalamiento en el tiempo.

Considere la señal x(t) afectada en el tiempo por un factor de 2.
Se encuentra que:

\phi\Big(\frac{t}{2}\Big)=x(t) \phi(t)=x(2t)

siguiendo con la señal del ejercicio anterior

x(t) = sin(t)
señal escala en tiempo
señal expande Comprime en tiempo

Algoritmo en Python para gráfica

# Señales- Operaciones expande comprime
import numpy as np
# INGRESO
w  = 1  # frecuencia
k  = 1  # desplazamiento
factor =2 # escala en tiempo
fx = lambda t: np.sin(w*t)

a  = -8 # intervalo de tiempo [a,b)
b  = 8
dt = 0.1

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

senal     = fx(ti)
derecha   = fx(ti-k)
izquierda = fx(ti+k)
expande  = fx(ti/factor)
comprime = fx(factor*ti)

# SALIDA - Gráfica
import matplotlib.pyplot as plt
plt.figure(1)
plt.plot(ti,senal,label='x(t)')
plt.plot(ti,derecha,
         label='derecha : x(t-k)',
         linestyle='dashed')
plt.plot(ti,izquierda,
         label='izquierda: x(t+k)',
         linestyle='dashed')

plt.axvline(0, color='gray')
plt.axhline(0, color='gray')
plt.xlabel('t')
plt.legend(loc='lower left')
plt.grid()

#plt.show()

# GRAFICA expande o comprime
plt.figure(2)
plt.plot(ti,senal,label='x(t)')
plt.plot(ti,expande,
         label='expande=x(t/factor)',
         linestyle='dashed')
plt.plot(ti,comprime,
         label='comprime=x(t*factor)',
         linestyle='dashed')
plt.axvline(0, color='gray')
plt.axhline(0, color='gray')
plt.xlabel('t')
plt.legend(loc='lower left')
plt.grid()

plt.show()


3. Inversión en tiempo de una señal

Si la función resultante es x(-t), la señal x(t) se invierte rotando sobre el eje de las ordenadas (vertical).

\phi (t)= x(-t)
señal invierte tiempo gráfico animado

Observe el resultado de la ecuación de ejemplo:

señal Invierte tiempo
# Señales- Operaciones inversion en tiempo
import numpy as np
# INGRESO
w  = 1  # frecuencia
k  = 1  # desplazamiento
factor =2 # escala en tiempo
fx = lambda t: np.sin(w*t)

a  = -8 # intervalo de tiempo [a,b)
b  = 8
dt = 0.1

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

senal     = fx(ti)
derecha   = fx(ti-k)
izquierda = fx(ti+k)
expande  = fx(ti/factor)
comprime = fx(factor*ti)
espejo   = fx(-ti) # inversion en tiempo

# SALIDA - Gráfica
import matplotlib.pyplot as plt
plt.figure(1)
plt.plot(ti,senal,label='x(t)')
plt.plot(ti,derecha,
         label='derecha : x(t-k)',
         linestyle='dashed')
plt.plot(ti,izquierda,
         label='izquierda: x(t+k)',
         linestyle='dashed')

plt.axvline(0, color='gray')
plt.axhline(0, color='gray')
plt.xlabel('t')
plt.legend(loc='lower left')
plt.grid()

#plt.show()

# GRAFICA expande o comprime
plt.figure(2)
plt.plot(ti,senal,label='x(t)')
plt.plot(ti,expande,
         label='expande=x(t/factor)',
         linestyle='dashed')
plt.plot(ti,comprime,
         label='comprime=x(t*factor)',
         linestyle='dashed')
plt.axvline(0, color='gray')
plt.axhline(0, color='gray')
plt.xlabel('t')
plt.legend(loc='lower left')
plt.grid()

plt.show()

# GRAFICA inversion en tiempo
plt.figure(3)
plt.plot(ti,senal,label='x(t)')
plt.plot(ti,espejo,
         label='espejo=x(-t)',
         linestyle='dashed')
plt.axvline(0, color='gray')
plt.axhline(0, color='gray')
plt.xlabel('t')
plt.legend(loc='lower left')
plt.grid()

plt.show()


4. Modelo general de desplazamiento, escalamiento, e inversión

En resumen, el efecto de transformar la variable independiente de una señal x(t) para obtener la señal modificada es de la forma:

x(at+b)

Con la transformación, la variable independiente conserva la forma de x(t). La señal puede ser:

  • alargada linealmente cuando |a| < 1 ,
  • comprimida si |a| > 1,
  • invertida en el tiempo si a < 0, y
  • desplazada en el tiempo si b es diferente de cero.
    • siendo desplazada a la derecha si se resta el valor de |b|
    • siendo desplazada a la izquierda si se suma el valor de |b|


5. Algoritmo en Python x(at+b)

# Señales - desplazamiento, escalamiento, e inversión
import numpy as np

# INGRESO
w  = -1  # frecuencia
k  = 0  # desplazamiento
fx = lambda t: np.sin(t)
gx = lambda t: fx(w*t+k)

a  = -8 # intervalo de tiempo [a,b)
b  = 8
dt = 0.1

# PROCEDIMIENTO
ti = np.arange(a,b,dt)
fi = fx(ti)
senal = gx(ti)

# SALIDA - Gráfica
import matplotlib.pyplot as plt
plt.figure(1)
plt.plot(ti,fi,label='x(t)')
plt.plot(ti,senal,label='x(wt+k)',
         linestyle='dashed')

plt.axvline(0, color='gray')
plt.axhline(0, color='gray')
plt.xlabel('t')
plt.legend(loc='lower left')
plt.grid()

plt.show()


Ejemplo de desplazamiento en tiempo de una señal

Observe por un minuto el siguiente video sobre el desplazamiento en el tiempo (delay) en una guitarra.




Unidades SS