# Script para ver y ocultar el codigo del jupyter
from IPython.display import HTML
HTML('''<script>
function code_toggle() {
if (code_shown){
$('div.input').hide('500');
$('#toggleButton').val('Ver el Codigo de Python')
} else {
$('div.input').show('500');
$('#toggleButton').val('Ocultar el Codigo')
}
code_shown = !code_shown
}
$( document ).ready(function(){
code_shown=false;
$('div.input').hide()
});
</script>
<form action="javascript:code_toggle()">
<input type="submit" id="toggleButton" value="Ver el Codigo de Python"></form>''')
Modificacion basicas de la variable independiente, generalemente el tiempo. Permiten introducir varias propiedades basicas de los sistemas y señales
# importar librerias de python
import sympy as sym # Libreria de operaciones matematicass simbolicas
import matplotlib.pyplot as plt
plt.style.use('bmh') # estilo de las graficas
%matplotlib inline
from IPython.display import Latex # para visualizar ecuaciones en jupyter
#sym.init_printing()
Definicion de la funcion a graficar que se usara como ejemplo
#definicion de t como variable simbolica
t = sym.symbols('t', real=True)
# Funcion en forma de triangulo
trian = t*sym.Heaviside(t) - t*sym.Heaviside(t - 1)
# Grafica de la funcion creada
print('x(t) = ')
sym.plot(trian,(t, -3, 3), ylabel=r'$x(t)$');
x(t) =
Una señal $x(t)$ o $x[n]$ que se retrasa por $\tau$ segundos se representa como una versión desplazada hacia la derecha el eje t.
Una señal desplazada en el tiempo $x(t)$ es definida como
\begin{equation} y(t) = x(t-\tau) \end{equation}con $\tau \in \mathbb{R}$. La señal $x(t)$ es
Ejemplo: Sonares, señales de sismos, radares, señales de varios sensores en diferentes posiciones
# Correr la funcion 1 segundo
print('x(t) = ')
sym.plot(trian,(t, -3, 3), ylabel=r'$x(t)$');
print('x(t-1) = ')
x = trian.subs(t, t-1)
sym.plot(x,(t, -3, 3), ylabel=r'$x(t-1)$', line_color='red');
x(t) =
x(t-1) =
# Correr la funcion 1 segundo
x = trian.subs(t, t+2)
print('x(t) = ')
sym.plot(trian,(t, -3, 3), ylabel=r'$x(t)$');
print('x(t+1) = ')
sym.plot(x,(t, -3, 3), ylabel=r'$x(t+2)$', line_color='red');
x(t) =
x(t+1) =
La inversion en el tiempo de una señal $x(t)$ esta definida como \begin{equation} y(t) = x(- t) \end{equation} Se interpreta geometricamente como el reflejo de la señal respecto al eje vertical
# invertir la funcion en el tiempo
#Grafica Original
print('x(t) = ')
sym.plot(trian,(t, -3, 3), ylabel=r'$x(t)$');
# Inversion
x = trian.subs(t, -t)
# Grafica de la funcion modificada
print('x(-t) = ')
sym.plot(x,(t, -3, 3), ylabel=r'$x(-t)$', line_color='red');
x(t) =
x(-t) =
La compresión o expansión de la señal en el tiempo es conocida como escalamiento en el tiempo.
El escalamiento temporal de la señal $x(t)$ se define como
\begin{equation} y(t) = x(a \cdot t) \end{equation}con $a \in \mathbb{R}$. La señal $x(t)$ es
Una aplicacaion del escalamiento temporal en procesamiento de señales en la adaptacion de la escala de tiempo para el modelamiento del efecto Doppler.
# Escalamiento temporal por un numero menor que 1
#Grafica Original
print('x(t) = ')
sym.plot(trian,(t, -3, 3), ylabel=r'$x(t)$');
# Escalamiento por 0.5
a = .5
x = trian.subs(t, a*t)
display(Latex(r'$\large x \left (\frac{1}{2} t \right)$'))
# Grafica de la funcion modificada
sym.plot(x,(t, -3, 3), ylabel=r'$x(1/2*t)$', line_color='red');
x(t) =
# Escalamiento temporal por un numero mayor que 1
#Grafica Original
print('x(t) = ')
sym.plot(trian,(t, -3, 3), ylabel=r'$x(t)$', title = 'x(t)');
# Escalamiento por 0.5
a = 2
x = trian.subs(t, a*t)
# Grafica de la funcion modificada
display(Latex(r'$\large x \left ( 2 t \right)$'))
sym.plot(x,(t, -3, 3), ylabel=r'$x(2*t)$', line_color='red');
x(t) =
El efecto de transformar la variable independiente de una señal $x(t)$ para obtener la señal modificada es de la forma:
\begin{equation} y(t) = x(a \cdot t +b) \end{equation}Con la transformación, la variable independiente conserva la forma de x(t). La señal puede ser:
Nota: Primero se hace el desplazamiento y luego se escala
# Transformaciones Generales
#Grafica Original
print('x(t) = ')
sym.plot(trian,(t, -3, 3), ylabel=r'$x(t)$');
# Escalamiento por 0.5
a = .5
# Desplazamiento de -1
x = trian.subs(t, a*t+1)
# Grafica de la funcion modificada
display(Latex(r'$\large x \left (\frac{1}{2} t +1\right)$'))
sym.plot(x,(t, -3, 3), ylabel=r'$x(1/2*t+1)$', line_color='red');
x(t) =
# Transformaciones Generales
#Grafica Original
print('Otro Ejemplo = ')
print('x(t) = ')
sym.plot(trian,(t, -3, 3), ylabel=r'$x(t)$');
# Escalamiento por -3
a = -3
# Desplazamiento de 2
x = trian.subs(t, a*t-2)
# Grafica de la funcion modificada
display(Latex(r'$\large x \left ( -3 t -2 \right)$'))
sym.plot(x,(t, -3, 3), ylabel=r'$x(-3*t-2)$', line_color='red');
Otro Ejemplo = x(t) =
Estos cambios no se realizan en la variable independiente, si no que afectan la amplitud de la señal
#Grafica Original
print('x(t) = ')
sym.plot(trian,(t, -3, 3), ylabel=r'$x(t)$')
# Multiplicar por dos la amplitud
print('2 x(t) = ')
sym.plot(2*trian,(t, -3, 3), ylabel=r'$2*x(t)$');
x(t) =
2 x(t) =
#Grafica Original
print('x(t) = ')
sym.plot(trian,(t, -3, 3), ylabel=r'$x(t)$')
# Multiplicar por dos la amplitud
print('-2 x(t) = ')
sym.plot(-2*trian,(t, -3, 3), ylabel=r'$-2*x(t)$');
x(t) =
-2 x(t) =
Phd. Jose R. Zapata