打印

关于浮点运算中除数为0或者NaN非数值的情况,大家有什么好的处理思路

[复制链接]
284|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
肉坨坨|  楼主 | 2018-8-1 19:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DSP库里面当前只有一个信噪比的函数做了简单处理,仅仅是简单处理,判断除数是否为NAN值0x7FC00000(NaN的一种情况)。

大家在使用有什么好的建议。

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);

}

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

419

主题

431

帖子

0

粉丝