El decibelio (dB) es una unidad relativa, es decir, no absoluta o de comparación que expresa la relación entre dos magnitudes:
El decibelio es una unidad:
Un belio equivale a 10 decibelios.
Como es una unidad logarítmica en base 10, si 0 belios es la magnitud de referencia, entonces 10 decibelios expresa un aumento de 10 veces la potencia y 20 decibelios expresa un aumento de 100 veces la potencia. Esto es, una diferencia de 40dB es una diferencia absoluta de 10000 unidades de medida ($10^4$).
Una tabla de valores sería:
$10 log X$ | $X$ |
40 | 10000 |
30 | 1000 |
20 | 100 |
10 | 10 |
0 | 1 |
-10 | 0.1 |
-20 | 0.01 |
-30 | 0.001 |
-40 | 0.0001 |
En telecomunicaciones no hay un nivel fijo o de referencia. Usamos el decibelio para comparar dos cantidades ,posiblemente muy diferentes, y por ello usamos la escala logarítmica.
Por ejemplo la ganancia, en decibelios, de un dispositivo es:
$dB = 10 log_{10} \frac{P_S}{P_E}$
donde $P_E$ es la potencia de entrada y $P_S$ es la de salida. Si $dB>0$ el sistema es amplificador y si $dB<0$ es atenuador.
Como hemos dicho, al ser el decibelio una unidad relativa, no podemos sumar sin más dos magnitudes en estas unidades ya que podrían referirse a orígenes relativos distintos. Por ejemplo, si tenemos dos medidas de sonido de 21dB el total no son 42db si no 24dB. La forma de sumar magnitudes en decibelios es transformarlas a las unidades originales, sumar y luego volver a pasar a decibelios o bien aplicar:
$dBTotales=10log_{10}(10^{\frac{X_1}{10}}+10^{\frac{X_2}{10}}+...)$
Donde los $X_n$ son los diferentes valores a sumar en dB.
import math
10*math.log10(10./5.)
3.010299956639812
Vemos que una diferencia en magnitud del doble son 3dB
10*math.log10(5./10.)
-3.010299956639812
Del mismo modo, una diferencia en magnitud de la mitad son -3dB
10*math.log10(30./10.)
4.771212547196624
... pero una diferencia del triple son 4.7dB, no 6db
Una antena que recibe 1W y produce una señal de 100W tiene una ganancia, en dB, de
10*math.log10(100./1.)
20.0
Y ahora, a ver si se dibujar (primera prueba) la curva $log_{10}$ Notar que, al igual que matlab, lo que hacemos es samplear la curva y pasarle los puntos a la función plot. El ejemplo lo he sacado de aqui.
import scipy, math
import matplotlib.pyplot as plt
# Graphing helper function
def setup_graph(title='', x_label='', y_label='', fig_size=None):
fig = plt.figure()
if fig_size != None:
fig.set_size_inches(fig_size[0], fig_size[1])
ax = fig.add_subplot(111)
ax.set_title(title)
ax.set_xlabel(x_label)
ax.set_ylabel(y_label)
freq = 1 #hz - cycles per second
amplitude = 10
time_to_plot = 2 # second
sample_rate = 100 # samples per second
num_samples = sample_rate * time_to_plot
#afeixit per Pere per evitar representar log(0)
time_origin=0.01
t = scipy.linspace(time_origin, time_to_plot, num_samples)
#signal = [amplitude * math.sin(freq * i * 2*math.pi) for i in t] # Explain the 2*pi
"""
ver que signal es una lista de
num_samples
con las muestras de la funcion a samplear
"""
signal = [amplitude * math.log10(i) for i in t]
setup_graph(x_label='', y_label='', title='log10')
plot(t, signal)
[<matplotlib.lines.Line2D at 0x439ecd0>]
Fuente: Wikipedia y otros Autor: Pere Vilás 2013