|
这是一个别人写好的防抖滤波程序
用于计算交流电压有效值防抖
形参num为通道号,Value为最小变化量
phase_result[num][i]为全局变量,保存8次测量有效值.
请高手分析他是怎么完成滤波功能的....
特别是
for (i = 0; i < 8; i++)
{
phase_result[num][i] = phase_result[num][result_channle];
}
这句,为什么全赋这个值.
uint queue(uchar num, uint value)
{
uchar i, j;
int queue_tmp[8];
long tmp,tmp1;
for (i = 0; i < 8; i++)
{
queue_tmp[i] = phase_result[num][i];
}
for (i = 0; i < 8; i++)
{
for (j = i; j < 8; j++)
{
if (queue_tmp[i] < queue_tmp[j])
{
tmp = queue_tmp[i];
queue_tmp[i] = queue_tmp[j];
queue_tmp[j] = tmp;
}
}
}
tmp = queue_tmp[2] + queue_tmp[3] + queue_tmp[4] + queue_tmp[5];
if (tmp > phase_result[num][8])
{
tmp1 = tmp - phase_result[num][8];
}
else
tmp1 = phase_result[num][8] - tmp;
if (tmp1 < value)
{
return (phase_result[num][8]);
}
else if (tmp1 < (value << 1))
{
phase_result[num][8] += (value >> 2);
return (phase_result[num][8]);
}
else
{
for (i = 0; i < 8; i++)
{
phase_result[num][i] = phase_result[num][result_channle];
}
phase_result[num][8] = (phase_result[num][result_channle] << 2);
return (phase_result[num][8]);
}
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|