eric2013 发表于 2020-3-30 01:20:14

ARM DSP库中有一个专门的信噪比计数函数arm_snr_f32


函数:

/**
* @briefCaluclation of SNR
* @parampRef         Pointer to the reference buffer
* @parampTest        Pointer to the test buffer
* @parambuffSize        total number of samples
* @return   SNR
* The function Caluclates signal to noise ratio for the reference output
* and test output
*/

float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize)
{
float EnergySignal = 0.0, EnergyError = 0.0;
uint32_t i;
float SNR;
int temp;
int *test;

for (i = 0; i < buffSize; i++)
    {
          /* Checking for a NAN value in pRef array */
          test =   (int *)(&pRef);
      temp =*test;

          if (temp == 0x7FC00000)
          {
                          return(0);
          }

          /* Checking for a NAN value in pTest array */
          test =   (int *)(&pTest);
      temp =*test;

          if (temp == 0x7FC00000)
          {
                          return(0);
          }
      EnergySignal += pRef * pRef;
      EnergyError += (pRef - pTest) * (pRef - pTest);
    }

        /* Checking for a NAN value in EnergyError */
        test =   (int *)(&EnergyError);
    temp =*test;

    if (temp == 0x7FC00000)
    {
                return(0);
    }


SNR = 10 * log10 (EnergySignal / EnergyError);

return (SNR);

}


说明:








wu32698318 发表于 2020-4-8 08:51:20

非常好,期待使用
页: [1]
查看完整版本: ARM DSP库中有一个专门的信噪比计数函数arm_snr_f32