Usando la Transformación Discreta de Fourier (DFT) para calcular la proporción señal-ruido

En un número anterior presentamos una función de filtrado que usa varias frecuencias de Fourier (que de ahora en adelante nombraremos como componentes) (k) con la amplitud más alta. La siguiente pregunta a hacernos sería: ¿cuál es el número mínimo de componentes que podemos usar que captura la esencia vital (aka información) de la señal original?

Para responder a esta pregunta, introduciremos una nueva medida -usada en el procesamiento de señales  y en teoría de la información- llamada la proporción señal-ruido (SNR). La proporción señal-ruido compara el nivel de señal deseada con el nivel de ruido de fondo. 

En este número empezaremos con la representación trigonométrica de la transformación de Fourier, calcularemos la potencia promedio contribuida por cada frecuencia/componente de Fourier (también conocida como densidad de potencia), y estimaremos la proporción señal-ruido para una función de filtrado genérica. Luego consideraremos un filtro de paso bajo (LPF, por sus siglas en inglés), un filtro que pasa señales con una frecuencia más baja que una frecuencia de corte seleccionada, y derivaremos una fórmula aproximada para calcular su SNR. Finalmente, discutiremos los valores de SNR usados comúnmente en aplicaciones prácticas y cómo podemos usarlos para establecer la frecuencia corte de filtrado.

 

¿Por qué nos debe preocupar?

Comparado con nuestro artículo previo sobre la transformada de Fourier, este artículo examina el tema desde una perspectiva diferente. Esperamos que elimine o actualice sus intuiciones y haga cumplir estos importantes conceptos. 

 

Trasfondo

La proporción señal/ruido se define a continuación:

$$\boldsymbol{}\textrm{SNR} = \frac{P_{signal}}{P_{noise}}$$

$${\rm{SN}}{{\rm{R}}_{{\rm{dB}}}} = 10 \times {\log _{10}}\left( {\frac{{{P_{signal}}}}{{{P_{noise}}}}} \right) = 10 \times {\log _{10}}\left( {{\rm{SNR}}} \right)$$

 

Donde:

  • ${P_{signal}}$ = Es la potencia media de la señal deseada.
  • ${P_{noise}}$ = Es la potencia media en ruido de fondo.
  • ${\rm{SN}}{{\rm{R}}_{{\rm{dB}}}}$ = Es la proporción señal/ruido, medida en decibeles

El ruido de fondo (N) es, por definición, estocástico (no determinístico), con una media igual a cero, de manera que SNR se expresa así: 

$$SNR = \frac{{{P_{signal}}}}{{E[{N^2}]}}$$

E[.] = Es la operadora de valor esperado

Tenga en cuenta que la definición de la potencia media del ruido de fondo es idéntica a su varianza para la señal de entrada (Q) no determinista (aleatoria); podemos expresar la potencia media como $E[{Q^2}]$. 

 

$$SNR = \frac{{E[{Q^2}]}}{{E[{N^2}]}} = \frac{{s_Q^2 + {{\bar Q}^2}}}{{s_N^2}}$$

 

Dado que la señal de entrada puede no tener una media de cero, tenemos ${\bar Q^2}$ en el numerador. Nótese que la proporción señal-ruido es una relación de las variaciones de entrada y ruido. 

 

Transformada Discreta de Fourier

Dada una muestra de datos finita xt de tamaño N, podemos expresar el valor en el tiempo t en términos de la transformación discreta de Fourier correspondiente $\{ {A_i}\angle {\phi _i}\} _{i = 0}^{N - 1}$ como aparece a continuación:

 

$$x(t) = \frac{1}{N}\left( {{A_o} + \sum\limits_{j = 1}^{N - 1} {{A_1}\cos (j \times \omega \times t + {\phi _j})} } \right)$$

$$\omega = \frac{{2\pi \times {f_s}}}{N}$$

Donde

  • N = El número de observaciones (aka puntos de datos) en el conjunto de datos de la muestra. 
  • {${A_o},{A_1},...,{A_{N - 1}}$}= las amplitudes de los componentes DFT.
  • $\{ {\phi _1},{\phi _2},..,{\phi _{N - 1}}\}$ = los ángulos de fase de los componentes DFT (medidos en radianes).
  • ${f_s}$ = Frecuencia o tasa de muestreo. 
  • $\omega$ = La frecuencia del radiante principal o fundamental del DFT.

Note que DFT es simétrico alrededor del componente N/2 (o el N/2+1, si N es un número par), y repite cada componente N (ej., es cíclico como se ilustra abajo).

 

DFT.png

 

Para nuestros propósitos aquí, y para evadir distinciones entre muestras de datos impares o uniformes, usamos todo el espectro $\{ 0,1,2,..,N - 1\}$ en nuestra derivación de abajo.

 

¿Por qué usamos DFT aquí?

Las funciones del coseno en la expresión de arriba son ortogonales (no correlacionadas) entre sí, de manera que el cálculo de la media y la varianza para la señal expresada como la suma ponderada de dichas funciones del coseno se simplifica enormemente. 

Calculemos la media de la señal 

 

$$\begin{aligned} E[x(t)] &= E\left[ {\frac{1}{N}\left( {{A_o} + \sum\limits_{j = 1}^{N - 1} {{A_1}\cos (j \times \omega \times t + {\phi _j})} } \right)} \right] \\ &= \frac{1}{N} \times \left( {{A_o} + \sum\limits_{j = 1}^{N - 1} {{A_1}E[\cos (j \times \omega \times t + {\phi _j})]} } \right) \\ &= \bar X = \frac{{{A_o}}}{N}\end{aligned} $$

 

Ahora, restemos la media de los valores de los puntos de datos:

$$x(t) - \bar X = \frac{1}{N}\sum\limits_{j = 1}^{N - 1} {{A_1}\cos (j \times \omega \times t + {\phi _j})} $$

 

La varianza de la señal de entrada (${s^2}$) se define así: 

$$\begin{aligned} {{\rm{s}}^2} &= E[{(x(t) - \bar x)^2} \\ & = \frac{1}{{{N^2}}}E\left[ {{{\left( {\sum\limits_{j = 1}^{N - 1} {{A_j}\cos (j \times \omega \times t + {\phi _j})} } \right)}^2}} \right] \end{aligned}$$

 

Let's expand this expression:

$$\begin{aligned}
\rm{s}^2 = & \frac{1}{{{N^2}}} \times \left( {\sum\limits_{j = 1}^{N - 1} {A_j^2E\left[ {{{\cos }^2}(j \times \omega \times t + {\phi _j})} \right]} } \right) +\\
& \frac{2}{{{N^2}}} \times \left( {\sum\limits_{j = 1}^{N - 2} {\sum\limits_{h = j + 1}^{N - 1} {{A_j}{A_h} E\left[ {\cos (j \times \omega \times t + {\phi _j})\times \cos (h \times \omega \times t + {\phi _h})} \right]} } } \right)
\end{aligned}$$

 

And, the $s^2$ can be expressed as follows:

$${s^2} = \frac{1}{{{N^2}}} \times \left( {\sum\limits_{j = 1}^{N - 1} {A_j^2E[{{\cos }^2}(j \times \omega \times t + {\phi _j})]} } \right) = \frac{1}{{{N^2}}}\sum\limits_{j = 1}^{N - 1} {\frac{{A_j^2}}{2}}$$

 

En resumen, la varianza de la señal de entrada se puede expresar de la siguiente manera: 

$${s^2} = \frac{1}{{2{N^2}}} \times \sum\limits_{j = 1}^{N - 1} {A_j^2}$$

 

Por lo tanto, cada componente DFT contribuye con $\frac{{{A^2}}}{{2{N^2}}}$ a la variación de la señal (o potencia). 

 

Función de filtro 

Para cualquier función de filtro dada tenemos dos señales: Input $\{ {I_t}\}$ y la señal de salida filtrada (${O_t}$).

 

DFTSNR.png

 

El ruido de fondo es simplemente diferente entre las dos señales: 

La Transformada Discreta de Fourier (DFT) para las señales de entrada y salida filtradas son: $ {A_i}\angle {\phi _i}\} _{i = 0}^{N - 1}$ and $\{ {B_i}\angle {\theta _i}\} _{i = 0}^{N - 1}$, respectivamente, y el DFT de la señal de ruido (${C_i}\angle {\gamma _i}\} _{i = 0}^{N - 1}$) es también la diferencia entre el DFT y las dos señales. 

$${C_i}\angle {\gamma _i} = {A_i}\angle {\phi _i} - {B_i}\angle {\theta _i}$$

 

Notemos que el cálculo de ${C_i}\angle \gamma$ implica números complejos, lo cual requiere que se resten tanto las partes reales como imaginarias.

Examinemos una función de filtro simple donde no se afecta el ángulo de fase del componente de frecuencia, solo la amplitud, entonces ${\gamma _i} = {\phi _i} = {\theta _i}$ and ${C_i} = ({A_i} - {B_i})\angle {\phi _i}$

$$\begin{aligned} SNR =&  \frac{{s_O^2 + {{\bar O}^2}}}{{s_N^2}} = \frac{{\frac{{B_o^2}}{{{N^2}}} + \frac{1}{{2{N^2}}} \times \sum\limits_{j = 1}^{N - 1} {B_j^2} }}{{\frac{1}{{2{N^2}}} \times \sum\limits_{j = 1}^{N - 1} {C_j^2} }} \\ =& \frac{{2B_o^2 + \sum\limits_{j = 1}^{N - 1} {B_j^2} }}{{\sum\limits_{j = 1}^{N - 1} {({A_j} - {B_j}} {)^2}}} \\ =& \frac{{2B_o^2 + \sum\limits_{j = 1}^{N - 1} {B_j^2} }}{{\sum\limits_{j = 1}^{N - 1} {A_j^2} + \sum\limits_{j = 1}^{N - 1} {B_j^2} - 2\sum\limits_{j = 1}^{N - 1} {{A_j}{B_j}} }}\end{aligned}$$

 

!Voila! Podemos calcular la SNR solamente usando las amplitudes de la DFT de la señal de entrada y salida. 

De ahora en adelante consideremos una muestra de tamaño impar (N).Usando la simetría de la propiedad de DFT podemos usar solamente la primera mitad del espectro, y la SNR se puede expresar de la siguiente manera:

 

$$\begin{aligned} SNR =& \frac{{2B_o^2 + 2\sum\limits_{j = 1}^{N/2} {B_j^2} }}{{2\sum\limits_{j = 1}^{N/2} {A_j^2} + 2\sum\limits_{j = 1}^{N/2} {B_j^2} - 4\sum\limits_{j = 1}^{N/2} {{A_j}{B_j}} }} \\ =& \frac{{B_o^2 + \sum\limits_{j = 1}^{N/2} {B_j^2} }}{{\sum\limits_{j = 1}^{N/2} {A_j^2} + \sum\limits_{j = 1}^{N/2} {B_j^2} - 2\sum\limits_{j = 1}^{N/2} {{A_j}{B_j}} }}\end{aligned}$$

 

Filtro de Paso Bajo

Para una función de filtro de paso bajo (LPF), a medida que aumenta la frecuencia de corte, también aumenta la proporción de SNR, ya que permite que pasen más componentes de frecuencia. 

$${B_j} = \left\{ {\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{{A_j}}&{j < K}
\end{array}}\\
{\begin{array}{*{20}{c}}
0&{j \ge K}
\end{array}}
\end{array}} \right.$$

La SNR se simplifica aún más: 

$$SNR(K) = \frac{{A_o^2 + \sum\limits_{j = 1}^{K - 1} {A_j^2} }}{{\sum\limits_{j = K}^{N/2} {A_j^2} }}$$

Examinemos el cambio marginal cuando se permite que un componente de frecuencia más (por ejemplo el componente K) pase a través del filtro:

$$\begin{aligned}{\rm{SNR}}(K + 1) &= \frac{{A_o^2 + \sum\limits_{j = 1}^{K - 1} {A_j^2} + A_K^2}}{{\sum\limits_{j = K}^{N/2} {A_j^2} - A_K^2}} \\ &= \frac{{\left( {A_o^2 + \sum\limits_{j = 1}^{K - 1} {A_j^2} } \right) \times \left( {1 + \frac{{A_K^2}}{{A_o^2 + \sum\limits_{j = 1}^{K - 1} {A_j^2} }}} \right)}}{{\sum\limits_{j = K}^{N/2} {A_j^2 \times \left( {1 - \frac{{A_K^2}}{{\sum\limits_{j = K}^{N/2} {A_j^2} }}} \right)} }}\\ &= SNR(K) \times \frac{{\left( {1 + \frac{{A_K^2}}{{A_o^2 + \sum\limits_{j = 1}^{K - 1} {A_j^2} }}} \right)}}{{\left( {1 - \frac{{A_K^2}}{{\sum\limits_{j = K}^{N/2} {A_j^2} }}} \right)}}\end{aligned}$$

 

A medida que aumentamos el valor de la frecuencia de corte de filtro (ej., K), el numerador se acerca a 1.0 rápidamente; por lo tanto podemos aproximar la fórmula SNR de la siguiente manera:

 

$${\rm{SNR(K + 1)}} \approx \frac{{{\rm{SNR(K)}}}}{{1 - A_K^2/\sum\limits_{j = K}^{N/2} {A_j^2} }}$$

$$\frac{{{\rm{SNR(K + 1)}}}}{{{\rm{SNR(K)}}}} \approx 1 + \frac{{A_K^2}}{{\sum\limits_{j = K + 1}^{N/2} {A_j^2} }}$$

 

Usando la fórmula podemos calcular el SNR:

$$SNR(1) = \frac{{A_o^2}}{{\sum\limits_{j = 1}^{N/2} {A_j^2} }}$$

$$SNR(2) = SNR(1) \times \left( {1 + \frac{{A_1^2}}{{\sum\limits_{j = 2}^{N/2} {A_j^2} }}} \right)$$

$$SNR(3) = SNR(2) \times \left( {1 + \frac{{A_2^2}}{{\sum\limits_{j = 3}^{N/2} {A_j^2} }}} \right)$$

$$SNR(M) = SNR(M - 1) \times \left( {1 + \frac{{A_{M - 1}^2}}{{\sum\limits_{j = M}^{N/2} {A_j^2} }}} \right)$$

 

Frecuencia de Corte LPF

Antes de que podamos abordar el problema de la frecuencia de corte, necesitamos decidir acerca de un SNR objetivo. ¿Cuál es un buen valor de SNR objetivo? Para empezar, cualquier valor mayor que uno  (o ${\rm{dB}} > 0$) indica que hay más potencia de señal que el ruido de fondo. 

Para obtener mejores resultados buscamos un valor SNR de 32 (ej. ${\rm{dB}} \ge 15$) o mas. 

Ahora podemos identificar una frecuencia de corte mínima que produce un valor SNR más cercano a 32.

 

Conclusión

En este artículo hemos usado la función de filtro de paso bajo para demostrar el cálculo de la proporción señal-ruido entre la señal de salida (filtrada) y la señal de entrada. Asumimos que cualquier diferencia entre dos señales es simplemente ruido de fondo. Además, aceptamos no tener conocimiento de la señal original sino que, por el contrario, usamos la señal de salida filtrada como un proxy.

Podemos aplicar los mismos principios usados en este artículo pero a distintas funciones de filtrado.  Las fórmulas pueden ser levemente distintas pero el fundamento permanece igual.

 

 

 

 

  Archivos adjuntos

Comentarios

Inicie sesión para dejar un comentario.

¿Fue útil este artículo?
Usuarios a los que les pareció útil: 0 de 0