0% encontró este documento útil (0 votos)
21 vistas15 páginas

LAB2

El documento detalla el uso de Python para generar y analizar señales básicas, incluyendo su representación gráfica y propiedades intrínsecas. Se exploran señales de tiempo continuo y discreto, así como su muestreo y clasificación, además de la interacción entre diferentes tipos de señales. También se analiza la generación de señales de audio y se discuten conceptos clave como el Teorema de Nyquist y la periodicidad de las señales.

Cargado por

levisandres2009
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
21 vistas15 páginas

LAB2

El documento detalla el uso de Python para generar y analizar señales básicas, incluyendo su representación gráfica y propiedades intrínsecas. Se exploran señales de tiempo continuo y discreto, así como su muestreo y clasificación, además de la interacción entre diferentes tipos de señales. También se analiza la generación de señales de audio y se discuten conceptos clave como el Teorema de Nyquist y la periodicidad de las señales.

Cargado por

levisandres2009
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Generacion y analiss de señaes

1 Ojetivos
• Usar Python para generar y graficar señales básicas.
• Analizar las propiedades de las señales.

2 Introducción
En el fascinante mundo del procesamiento de señales, nos encontramos con dos tipos principales:
las señales de tiempo continuo, presentes en la naturaleza, y las señales de tiempo discreto, con
las que trabajamos en sistemas digitales. Aunque no podemos representar directamente las señales
continuas en un ordenador, el proceso de muestreo nos permite capturar su esencia y trabajar con
ellas de forma digital.
Python, con su vasto ecosistema de librerías científicas, se convierte en una herramienta poderosa
para explorar este campo. En este laboratorio, nos apoyaremos en:
• NumPy: Fundamental para la creación y manipulación de arreglos que representarán nues-
tras señales discretas.
• SciPy: Una caja de herramientas esencial para definir señales básicas y aplicar algoritmos
de procesamiento.
• Matplotlib: Nuestro aliado para visualizar estas señales, transformando datos en gráficas
claras y reveladoras.
• IPython.display.Audio: Para dar vida a nuestras señales, permitiéndonos generar y repro-
ducir audio.
A lo largo de este laboratorio, nos sumergiremos en la definición y graficación de señales fundamen-
tales como exponenciales, senoidales, y más. El objetivo principal es desentrañar sus propiedades
intrínsecas: determinar si son periódicas o no, identificar su simetría (pares o impares), clasificar-
las según su energía o potencia, y observar cómo se comportan al interactuar entre sí. Además,
experimentaremos con la generación de señales de audio para una comprensión más completa.
¡Prepárate para visualizar, analizar y escuchar el mundo de las señales a través del poder de Python!
#Marco teorico
Una de las formas más comunes en que surgen las señales de tiempo discreto es mediante el muestreo
de señales de tiempo continuo. Considere la señal de tiempo continuo 𝑥(𝑡) que se muestra en la
Figura 1 (a). Podemos representar esta señal como una señal de tiempo discreto empleando valores
de 𝑥(𝑡) en intervalos de tiempo 𝑛𝑇𝑠 para formar la señal 𝑥[𝑛], como se muestra en la Figura 1 (b).

1
1
Es decir: 𝑥[𝑛] = 𝑥(𝑛𝑇𝑠 ), donde 𝑇𝑠 es el período de muestreo, dado en segundos, y 𝑓𝑠 = 𝑇𝑠 es la
frecuencia de muestreo en Hz.
Si 𝑇𝑠 es “lo suficientemente pequeño”, 𝑥(𝑡) se puede reconstruir a partir de 𝑥[𝑛] simplemente
“conectando los puntos” (uno de los métodos de interpolación más simples). Intuitivamente, cuanto
más rápido varía 𝑥(𝑡), menor debe ser 𝑇𝑠 para proporcionar una aproximación razonable de 𝑥(𝑡).
Para garantizar que la señal de tiempo continuo pueda reconstruirse a partir de sus muestras, la
frecuencia de muestreo debe ser superior al doble de la frecuencia más alta presente en la señal (𝑓𝑀 );
esta tasa se conoce comúnmente como la Tasa de Nyquist y la frecuencia 2𝑓𝑀 es la Frecuencia
de Nyquist. Cumplir con este criterio evita el fenómeno del aliasing.
[2]: from matplotlib import pyplot as plt
import numpy as np
from scipy import signal
from scipy import special

[3]: t = np.arange(0,15,0.001)
x = 3*np.cos(np.pi*t)
plt.figure()
plt.plot(t,x,)
plt.show()

2
[4]: t = np.arange(-10,10,0.001)
x1 = np.cos(t)
plt.figure()
plt.plot(t, x1)
plt.title("coseno")
plt.xlabel('t')
plt.show()
plt.figure()
x2 = 2*signal.square(3*np.pi*t)
plt.plot(t,x2)
plt.title("Onda cuadrada")
plt.xlabel('t')
plt.show()
plt.figure()
x3 = np.exp(-1 * t) * (t >= 0)
plt.plot(t,x3)
plt.title("Exponencial decreciente")
plt.xlabel('t')
plt.show()
plt.figure()
x4 = 5*signal.sawtooth(7*t)
plt.plot(t,x4)
plt.title("Diente de sierra")
plt.xlabel('t')
plt.show()
plt.figure()
x5 = special.expit(t)
plt.plot(t,x5)
plt.title("Sigmoide logistica")
plt.xlabel('t')
plt.show()

3
4
5
6
7
Clasificacion de la señales
[8]: periodo_x1 = 2 * np.pi / 1
print(f"Periodo fundamental del coseno (x1): {periodo_x1}")

Periodo fundamental del coseno (x1): 6.283185307179586

[9]: periodo_x2 = 2 * np.pi / (3 * np.pi)


print(f"Periodo fundamental de la onda cuadrada (x2): {periodo_x2}")

Periodo fundamental de la onda cuadrada (x2): 0.6666666666666666

[10]: periodo_x4 = 2 * np.pi / 7


print(f"Periodo fundamental del diente de sierra (x4): {periodo_x4}")

Periodo fundamental del diente de sierra (x4): 0.8975979010256552


a. Coseno (x1): Par, Señal de potencia, Periódica, Período fundamental = 6.283185307179586
b. Onda cuadrada (x2): Impar, Señal de potencia, Periódica, Período fundamental =
0.6666666666666666

8
c. Exponencial decreciente (x3): Ni par ni impar, Señal de energía, No periódica
d. Diente de sierra (x4): Impar, Señal de potencia, Periódica, Período fundamental =
0.8975979010256552
e. Sigmoide logistica (x5): Ni par ni impar, Señal de energía, No periódica
2. Multiplicación de una señal par por una impar y observe el resultado en una gráfica.
¿La señal resultante es par o impar? ¿Cuál es el resultado si se multiplican dos señales
pares? ¿y si se multiplican dos impares?
[12]: #multiplicacion

y1=x5*x1
plt.figure()
plt.plot(t,y1)
plt.title("Multiplicacion de una señal par por una impar")
plt.xlabel('t')
plt.show()

9
[13]: y2=x5*x3
plt.figure()
plt.plot(t,y2)
plt.title("Multiplicacion de dos señales de energia")
plt.xlabel('t')
plt.show()

[14]: y2=x1*x2
plt.figure()
plt.plot(t,y2)
plt.title("Multiplicacion de dos señales potencia")
plt.xlabel('t')
plt.show()

10
[15]: y2=x3*x4
plt.figure()
plt.plot(t,y2)
plt.title("Multiplicacion de periódica por una no periódica")
plt.xlabel('t')
plt.show()

11
Multiplicación de una señal de energía por una de potencia (y1 = x5 * x1): La señal resultante (y1)
parece ser una señal de energía. Al multiplicar una señal de energía (que tiene energía finita) por
una señal de potencia (que tiene potencia finita y energía infinita), el resultado generalmente tiende
a tener energía finita. Multiplicación de dos señales de energía (y2 = x5 * x3): La señal resultante
(y2) parece ser una señal de energía. La multiplicación de dos señales de energía resulta en otra señal
de energía. Multiplicación de dos señales de potencia: Si se multiplican dos señales de potencia, el
resultado generalmente es una señal de potencia. (Aunque no realizaste esta multiplicación en el
notebook, es una propiedad general).
Parte 2. Análisis de señales de tiempo discreto
[ ]: n = np.arange(-20,21)
plt.figure(figsize=(12,7))
z1 = 3*np.sin(np.pi/6*n)

plt.subplot(2,2,1), plt.stem(n,z1), plt.title('z1')


z2 = 3*np.cos(np.pi/2*n)
plt.subplot(2,2,2), plt.stem(n,z2), plt.title('z2')
z3 = 3*np.sin(n)
plt.subplot(2,2,3), plt.stem(n,z3), plt.title('z3')
z4 = 3*np.sin(np.pi/5*n)*1.2**n

12
plt.subplot(2,2,4), plt.stem(n,z4), plt.title('z4')
plt.show()

Parte 3. Generación y ejecución de señales de audio


[ ]: from IPython.display import Audio
frecuencia = 13000 # Nota Do
fs = 3000 # frecuencia de muestreo
duracion = 10 # duración de la nota
t = np.linspace(0, duracion, duracion * fs, False)
nota = np.sin(frecuencia * t * 2 * np.pi)
# Comenzar reproducción
Audio(nota,rate=fs)

[ ]: <IPython.lib.display.Audio object>

7. Cambie la frecuencia de la nota y escuche el resultado.


[ ]: from IPython.display import Audio
frecuencia2 = 220
fs = 3000 # frecuencia de muestreo
duracion = 10 # duración de la nota
t = np.linspace(0, duracion, duracion * fs, False)
nota = np.sin(frecuencia2 * t * 2 * np.pi)
# Comenzar reproducción

13
Audio(nota,rate=fs)

[ ]: <IPython.lib.display.Audio object>

[ ]:

[ ]: from IPython.display import Audio


frecuencia1 = 200
fs = 3000 # frecuencia de muestreo
duracion = 10 # duración de la nota
t = np.linspace(0, duracion, duracion * fs, False)
nota = np.sin(frecuencia1 * t * 2 * np.pi)
# Comenzar reproducción
Audio(nota,rate=fs)

[ ]: <IPython.lib.display.Audio object>

3 Análisis de resultados
a. Requisito para que una señal muestreada represente con exactitud la forma de onda de una señal
de tiempo continuo: El requisito fundamental es que la frecuencia de muestreo (la velocidad a la
que se toman muestras de la señal continua) debe ser al menos el doble de la frecuencia más alta
presente en la señal continua original. Esto se conoce como el Teorema de Nyquist-Shannon. Si
la frecuencia de muestreo es menor, se produce un fenómeno llamado “aliasing”, donde diferentes
frecuencias en la señal continua se vuelven indistinguibles después del muestreo, lo que lleva a una
representación inexacta.
b. Por qué no todas las señales senoidales de tiempo discreto son periódicas: Una señal senoidal
de tiempo discreto de la forma 𝑥[𝑛] = 𝐴 cos(𝜔0 𝑛 + 𝜙)𝑥[𝑛] = 𝐴 cos(𝜔0 𝑛 + 𝜙) es periódica si y solo
si 𝜔0 /(2𝜋)𝜔0 /(2𝜋) es un número racional. Es decir, si la razón entre la frecuencia angular discreta
(𝜔0 𝜔0 ) y 2𝜋2𝜋 puede expresarse como una fracción de dos enteros (𝑝/𝑞𝑝/𝑞). Si esta razón es un
número irracional, la señal de tiempo discreto no se repetirá y, por lo tanto, no será periódica.
c. Cuál propiedad del sonido cambia al variar la frecuencia? ¿Qué ocurre cuando esta aumenta?: La
propiedad del sonido que cambia al variar la frecuencia es el tono (o altura). Cuando la frecuencia
aumenta, el tono se vuelve más agudo. Cuando la frecuencia disminuye, el tono se vuelve más
grave.
d. Cuál propiedad del sonido cambia al variar la forma de onda de la señal?: La propiedad del
sonido que cambia al variar la forma de onda de la señal es el timbre. El timbre es lo que nos
permite distinguir entre diferentes instrumentos musicales o voces humanas que producen la misma
nota (misma frecuencia) y con la misma intensidad (misma amplitud). La forma de onda contiene
información sobre los armónicos y la estructura temporal del sonido, lo que define su timbre único.

4 Conclusiones
Después de explorar estas diferentes señales y sus características, me doy cuenta de lo fascinante
que es el mundo de las señales. Es increíble cómo algo tan fundamental como la forma de una onda

14
o su periodicidad puede definir propiedades tan distintas, desde el tono de una nota musical hasta
si una señal tiene energía finita o infinita. Entender estas clasificaciones y cómo interactúan las
señales al multiplicarse, por ejemplo, nos da una perspectiva más profunda de cómo se comportan
los fenómenos en nuestro entorno, desde las comunicaciones hasta el sonido. Es como si cada señal
tuviera su propia “personalidad” definida por estas propiedades.

15

También podría gustarte