以下是匠人的一阶滤波算法:
if(NEW_DATA<OLD_DATA)
{
result=OLD_DATA-NEW_DATA;
result=result*K;
result=result+128;
result=result/256;
result=OLD_DATA-result;
}
if(NEW_DATA>OLD_DATA)
{
result=NEW_DATA-OLD_DATA;
result=result*K;
result=result+128;
result=result/256;
result=OLD_DATA+result;
}
else result=OLD_DATA;
其中OLD_DATA为上次滤波结果。
K=1,当第一次采集到的值,例如为128.
而OLD_DATA中没有值,即运行
if(NEW_DATA>OLD_DATA)
{
result=NEW_DATA-OLD_DATA;
result=result*K;
result=result+128;
result=result/256;
result=OLD_DATA+result;
}
得到的结果会是1.
不明白,第一个采集到的信号,应该如果对OLD_DATA赋值? |