Cómo calcular SNR en señal cuando no tengo señal silenciosa original

Dado el ‘detalle’ en la pregunta, procedamos bajo el supuesto de que una señal y (t) es la señal original x (t) corrompida por el ruido n (t) . Si el ruido es AWGN, y (t) = x (t) + n (t) . Entre muchos métodos que se pueden encontrar en la literatura, veamos un método basado en wavelet:

Tome la transformación wavelet de la señal y extraiga el primer nivel detallado de coeficiente. La estimación de la varianza del ruido se puede calcular utilizando la estimación MAD [1]. Bajo el supuesto de que x (t) yn (t) no están correlacionadas, [matemática] SNR = \ frac {variance_y – variance_n} {variance_n} [/ math]

El fragmento de código R se proporciona a continuación para calcular la desviación estándar de ruido (cuyo cuadrado es la varianza) utilizando la estimación MAD.

biblioteca (wavelets);
# x <- some_signal + WGN;
mra <- modwt (x, filter = "haar", n.levels = 1, fast = TRUE);
noiseSdEst <- mediana (abs ( [correo electrónico protegido] [[1]] – mediana ( [correo electrónico protegido] [[1]]))) / 0.67;

[1] Mediana desviación absoluta