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);
}
说明:
非常好,期待使用
页:
[1]