#!/usr/bin/env python
# coding: utf-8
# # Señales Periódicas y No periódicas
# ## SISTEMAS Y SEÑALES
# ### Ingenieria de Telecomunicaciones
# ### Universidad Pontificia Bolivariana
# ### Por: Jose R. Zapata - [https://joserzapata.github.io/](https://joserzapata.github.io/)
# **joser.zapata@upb.edu.co**
# In[1]:
# Script para ver y ocultar el codigo del jupyter
from IPython.display import HTML
HTML('''
''')
# Contenido
#
# # Señales Periodicas
#
# Las señales periodicas continuas $x(t)$ cumplen la caracteristica que existe un valor $T$ tal que:
# \begin{equation}
# \large x(t) = x(t+T) \:\:\:\:\:\: \forall t \in \mathbb{R}.
# \end{equation}
#
# **Propiedad:** No cambia para un corrimiento del tiempo $T$
#
# ## Señal continua
# Si $x(t)$ es continua entonces:
# \begin{equation}
# \large x(t) = x(t+m \cdot T) \:\:\:\:\:\: \forall m \in \mathbb{Z}
# \end{equation}
#
# El valor de T es conocido como el periodo de la señal.
#
# La relación entre el periodo T y la frecuencia f se da por la ecuacion:
#
# \begin{equation}
# \large f = \frac{1}{T}[=]\frac{1}{seg}\text{Hz}
# \end{equation}
#
# \begin{equation}
# \large\omega = 2 \pi f = \frac{2 \pi}{T} [=]\text{rad/seg}
# \end{equation}
#
# El periodo fundamental $To$ de $x(t)$ es el valor mas pequeño para el cual se cumple la ecuacion anterior.
#
# Si $x(t) = kte$ entonces $T = Indefinido$
# In[2]:
# 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
get_ipython().run_line_magic('matplotlib', 'inline')
#sym.init_printing()
from IPython.display import Latex # para visualizar ecuaciones en jupyter
# In[3]:
# definicion de t como variable simbolica
t, omega = sym.symbols('t omega', real=True)
# Funcion en forma de triangulo
coseno = sym.cos(omega*t)
display(Latex(r'$\large x(t) = cos(2 \cdot t )$'))
# Grafica de la funcion creada
sym.plot(coseno.subs(omega, 2), (t, -2, 9),
ylim=[-1.2, 1.2], ylabel=r'$x(t)$', legend=True);
# **Pregunta:** Si $w=2$ cuanto es el valor de la frecuencia en Hz?
# ## Señal discreta
# Si $x[n]$ es discreta entonces:
# \begin{equation}
# \large x[n] = x[n+N] \:\:\:\:\:\: \forall n \in \mathbb{Z}
# \end{equation}
#
# EL periodo fundamental $No$ es el valor mas pequeño
# In[4]:
import numpy as np
import matplotlib.pyplot as plt
get_ipython().run_line_magic('matplotlib', 'inline')
# In[5]:
plt.figure(figsize=(12, 5))
# ingreso de parámetros
N = 8
m = 3
t0 = 0
# Procedimiento
tn = m*N
w = 2*np.pi/N
n = np.arange(t0, tn, 1)
xn = np.cos(w*n)
# Salida
plt.stem(n, xn, use_line_collection=True)
plt.xlabel('n')
plt.ylabel('x[n]')
plt.title('$x[n] = Cos[w \cdot n]$ con $N = 8$')
plt.xticks(np.arange(min(n), max(n)+1, 1.0))
plt.show()
# # Señales No Periodicas
# En éste caso, los valores de la señal no se repiten para ningun valor de $T$.
#
# También para algunos problemas se considera que $T\rightarrow \infty $.
#
# ## Señal Continua
#
# Un ejemplo del tipo de señal es: $x(t)=t^2$
# In[6]:
# Grafica de la funcion creada
t2 = t*t
display(Latex(r'$\large x(t) = t² $'))
sym.plot(t2, (t, 0, 3), ylabel=r'$x(t)$', legend=True);
# ## Señal Discreta
# In[7]:
yn = n**2
# SALIDA - Gráfica
plt.stem(n, yn, use_line_collection=True)
plt.xlabel('n')
plt.ylabel('y[n]')
plt.title('$y[n]=n^2$')
plt.show()
# # Ejercicios
# Realice las graficas de las siguientes funciones contínuas:
#
# - $\large t^3$
# - $\large e^t$
# - $\large \frac{1}{t}$
#
# y sus versiones discretas
# - $\large n^3$
# - $\large e^n$
# - $\large \frac{1}{n}$
# # REFERENCIAS
# Oppenheim Seccion 1.2.2
# **Phd. Jose R. Zapata**
# - [https://joserzapata.github.io/](https://joserzapata.github.io/)
# - https://twitter.com/joserzapata
#