segsnr.c
来自「关于AMR-WB+语音压缩编码的实现代码」· C语言 代码 · 共 43 行
C
43 行
/*_____________________________________________________________________
| |
| FUNCTION NAME segsnr |
| Computes the segmential signal-to-noise ratio between the |
| signal x and its estimate xe of length n samples. The segment |
| length is nseg samples. |
|
| INPUT
| x[0:n-1] Signal of n samples.
| xe[0:n-1] Estimated signal of n samples.
| n Signal length.
| nseg Segment length, must be a submultiple of n.
|
| RETURN VALUE
| snr Segmential signal to noise ratio in dB.
|_____________________________________________________________________|
*/
#include <math.h>
#include <float.h>
#include "../include/amr_plus.h"
float segsnr(float x[], float xe[], short n, short nseg)
{
float snr = 0.0f;
float signal, noise, error, fac;
short i, j;
for (i = 0; i < n; i += nseg) {
signal = 1e-6f;
noise = 1e-6f;
for (j = 0; j < nseg; j++) {
signal += (*x)*(*x);
error = *x++ - *xe++;
noise += error*error;
}
snr += (float)log10((double)(signal/noise));
}
fac = ((float)(10*nseg))/(float)n;
snr = fac*snr;
if (snr < -99.0f) {
snr = -99.0f;
}
return(snr);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?