ilikeavr666 发表于 2012-3-27 22:17:02

求教高手解析下这个滤波程序......

这是一个别人写好的防抖滤波程序
用于计算交流电压有效值防抖
形参num为通道号,Value为最小变化量
phase_result为全局变量,保存8次测量有效值.
请高手分析他是怎么完成滤波功能的....
特别是
for (i = 0; i < 8; i++)
    {
      phase_result = phase_result;
    }
这句,为什么全赋这个值.

uint queue(uchar num, uint value)
{
uchar i, j;
int queue_tmp;
long tmp,tmp1;
for (i = 0; i < 8; i++)
{
    queue_tmp = phase_result;
}
for (i = 0; i < 8; i++)
{
    for (j = i; j < 8; j++)
    {
      if (queue_tmp < queue_tmp)
      {
      tmp = queue_tmp;
      queue_tmp = queue_tmp;
      queue_tmp = tmp;
      }
    }
}
tmp = queue_tmp + queue_tmp + queue_tmp + queue_tmp;
if (tmp > phase_result)
{
    tmp1 = tmp - phase_result;
}
else
    tmp1 = phase_result - tmp;
if (tmp1 < value)
{
    return (phase_result);
}
else if (tmp1 < (value << 1))
{
    phase_result += (value >> 2);
    return (phase_result);
}
else
{
    for (i = 0; i < 8; i++)
    {
      phase_result = phase_result;
    }
    phase_result = (phase_result << 2);
    return (phase_result);
}
}

ilikeavr666 发表于 2012-3-28 10:16:03

等高人呢???????????
页: [1]
查看完整版本: 求教高手解析下这个滤波程序......