如何在MATLAB中计算信号的SNR?

时间:2013-04-25 13:21:28

标签: matlab signals noise

我在计算SNR时遇到了一个非常简单但基本的问题:

有几个信号:

  • S1 =没有噪音的原始且纯净的信号。

  • N1 =将加入S1的高斯白噪声。

  • S2 = S1 + N1(执行降噪算法前的噪声信号)

  • S3 =噪声降低信号(执行降噪算法后)

  • N2 = S3 - S1(执行降噪算法后的噪音量)

现在我想比较执行降噪算法之前和之后的SNR。

  1. 我应该考虑哪些信号用于SNR_before!? S1 / N1 S2 / N1

  2. 我应该考虑哪些信号用于SNR_after!? S3 / N1 S3 / N2

  3. 我应该在MATLAB中使用哪些命令或函数来计算SNR_before和SNR_after?

  4. 感谢十亿人把时间用在帮助我身上。

1 个答案:

答案 0 :(得分:1)

我之前对计算snr的了解:

snrBeforeNoise = mean(signal。^ 2)/ mean(noise。^ 2);

关于snr之后:

residual_noise = signal - noise_reduced_signal; snr_after = mean(signal。^ 2)/ mean(residual_noise。^ 2);