1.9 Señales de Energía y Potencia


señal:

energía

potencia

algoritmo f(x)


1. Señal de Energía

Referencia: Lathi 1.1-1 p65, Hsu 1.2.G p5

Una señal de energía tiene energía finita. En general toda señal en el sentido práctico tiene duración finita, por lo que la energía es finita.

La energía se define como:

E=\int_{-\infty}^{\infty} x^2(t) dt

o de una forma más general incluyendo señales de tipo compleja:

E=\int_{-\infty}^{\infty} |x(t)|^2 dt

No se considera solo como energía el área bajo la curva, o integral de la señal, debido a que puede contener áreas de signo negativo que pueden cancelar la media. El cuadrado de la señal será siempre positivo.

La señal tiene que ser de tipo finita para que la medida tenga significado. Una condición necesaria para que la señal sea finita es que su amplitud → 0 cuando |t|→ ∞. En cualquier otro caso la integral no converge.

Para una señal discreta:

E=\sum_{n=-\infty}^{\infty} | x[n] |^2

Ejemplo de señal de Energía

Un ejemplo de señal de Energía es un audio limitado en el tiempo, pues su amplitud tiende a 0 cuando |t|→ ∞.

Usando el mismo archivo de audio del ejercicio de señales analógicas y digitales:

Alarm01.wav

Recuerde que el archivo de audio.wav debe estar en el mismo directorio de trabajo que el archivo algoritmo.py.

señal energía potencia

El audio mostrado es una señal limitada en el tiempo, por lo que es posible calcular su energía usando la formula descrita.

Referencia: Archivos de Audio.wav – Abrir, extraer una porción en CCPG1001 Fundamentos de programación

para procesar el archivo, las instrucciones en Python son:

# Señales de Energía y Potencia
import numpy as np
import scipy.io.wavfile as waves

# INGRESO
# archivo = input('archivo de audio: ')
archivo = 'Alarm01.wav'

# PROCEDIMIENTO
muestreo, sonido = waves.read(archivo)
muestras = len(sonido)
dt = 1/muestreo
ti = np.arange(0,muestras*dt,dt)
uncanal = sonido[:,0] # canal derecho/izquierdo 0/1

# SALIDA - GRAFICA Observación intermedia
import matplotlib.pyplot as plt
plt.plot(ti,uncanal)
plt.xlabel('t segundos')
plt.ylabel('sonido[ti]')
plt.tight_layout()
plt.show()

Integración numérica de muestras

En el caso de las muestras disponibles de audio, las muestras están igualmente espaciadas, se puede integrar usando la regla de Simpson integrate.simpson(valores,x=t) para obtener un estimado de alta precisión.

Para desarrollar el tema de integración numérica puede revisar el tema en Métodos numéricos en el siguiente enlace:  Unidad 05 Integración y Diferenciación Numérica

import scipy.integrate as integrate

# cuadrado de la señal para el integral de energía
senal = uncanal**2

#integrando a partir de muestras de la señal
energia = integrate.simpson(senal ,x=ti)

# SALIDA
print(' La energía del audio es: ',energia)
print('\n revisando el canal y sus cuadrados')
print(uncanal[2500:2510])
print(senal[2500:2510])
 ======
 La energía del audio es:  3767.04523053637

 revisando el canal y sus cuadrados
[-16  -1   8  -3  -8   4  11  -1  -4  10]
[256   1  64   9  64  16 121   1  16 100]


2. Señal de Potencia

Si en x(t) la amplitud no tiende → 0 al mismo tiempo que |t|→ ∞, la energía de la señal será infinita.

Una mejor medida de la señal en este caso es promedio de energía en el un intervalo de tiempo T, si es periódica, existe T.

La señal de potencia se define como:

P_x =\lim_{T \to \infty}\frac{1}{T} \int_{-T/2}^{T/2} | x(t) |^2 dt

y para una señal discreta:

P =\lim_{N \to \infty}\frac{1}{2N+1} \sum_{n=-N}^{N} | x[n] |^2

2.1 Algoritmo en Python potencia de una señal f(x)

Considere una señal periódica conocida sin(), integrando dentro de un periodo podemos calcular la energía y luego la potencia.

# Señales de Energía y Potencia f(x)
import numpy as np
import scipy.integrate as integrate

# INGRESO - Parámetros
w  = 1
fx = lambda t: np.sin(w*t)

a  = 0  # intervalo de tiempo [a,b)
b  = 2*np.pi # un periodo T
dt = 0.005

# PROCEDIMIENTO
T  = 2*np.pi/w
ti = np.arange(a,b,dt)
senal = fx(ti)

# energía en un periodo
senal2 = senal**2
energia  = integrate.simpson(senal2,x=ti)

# potencia en un periodo
potencia = (1/T)*energia

# SALIDA
print('la energia de fx es: ',energia)
print('la potencia de fx es: ',potencia)

# gráfica
import matplotlib.pyplot as plt
plt.plot(ti,senal,label='f(x)')
plt.fill_between(ti,0,senal2,color='lightgreen')
plt.plot(ti,senal2,'g--', label='fx^2')
plt.xlabel('t')
plt.legend()
plt.show()
la energia de fx es:  3.1415926428170016
la potencia de rx es:   0.499999998285457
señal energía potencia

Para revisar los resultados, realizamos el cálculo de potencia haciendo x(t)=sin(t)

P_x =\lim_{T \to \infty}\frac{1}{T} \int_{-T/2}^{T/2} | x(t) |^2 dt

se tiene que:

=\frac{1}{2\pi} \int_{0}^{2\pi} | sin(t) |^2 dt = \frac{1}{2\pi} \int_{0}^{2\pi} \Big[ \frac{1}{2}-\frac{cos(2t)}{2}\Big] dt =\frac{1}{4\pi} \int_{0}^{2\pi} \Big[ 1-{cos(2t)}\Big] dt =\frac{1}{4\pi} \Big[\int_{0}^{2\pi} 1 dt - \int_{0}^{2\pi}{cos(2t)} \Big]dt =\frac{1}{4\pi} \Big[t \Big|_0^{2\pi} \ - \frac{sin(2x)}{2}\Big|_0^{2\pi} \ \Big] =\frac{1}{4\pi}\Big[(2\pi-0)- (sin(2\pi)-sin(0)) \Big] = \frac{1}{2}

que es el resultado de potencia obtenido usando Python.

Tarea

Realice el mismo cálculo para la energía de la señal del ejemplo anterior.




Unidades SS