⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 segsnr.c

📁 关于AMR-WB+语音压缩编码的实现代码
💻 C
字号:
/*_____________________________________________________________________
 |                                                                     |
 |  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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -