本帖最后由 qiushenghua 于 2014-9-9 18:04 编辑
在工程中遇到了这么个问题:
传感器传递过来的数据误差比较大,为了提高测量精度,需要对传值求平均值。
初步计划对连续采得的5个数求平均值并认为其是这个变量的近似值。
但是,尴尬的问题来了:
需要计算的变量是一个角度量,取值范围在0-359之间,在0度附近的时候,获得的数据可能是0-5到355-359之间的任意一个数。
举个栗子:采样的数据是1,2,359,358,0,比较容易的可以看出,正确的平均值应该是0才对,可是,按照(1+2+359+358+0)/5计算,结果是144,与正确值0相差甚远。有没有什么好的算法可以对这样的环形值域变量求取平均值?
此帖出自
小平头技术问答
伪代码
sum=0;
temp=*P;
p++;
for(; ;)
{
if( *P - temp > 半周期) sum += (*P - 周期);
else if( *P-temp < -半周期) sum+=(*P +周期);
else sum += *P;
}
...
一周热门 更多>