野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2152|回复: 1

《STM32库开发实战指南》21章,读取滤波后的X,Y

[复制链接]
发表于 2015-3-27 14:16:32 | 显示全部楼层 |阅读模式
函数名:Read_2046,
描述:读取滤波后的X,Y
如下蓝色部分程序,请问下面是基于什么原则取平均值?
  if(count==9)                                                                  
    {  //分三组取平均值
        temp[0]=(buffer[0][0]+buffer[0][1]+buffer[0][2])/3;
        temp[1]=(buffer[0][3]+buffer[0][4]+buffer[0][5])/3;
        temp[2]=(buffer[0][6]+buffer[0][7]+buffer[0][8])/3;
        //计算三组数据的差值.
        m0=temp[0]-temp[1];
        m1=temp[1]-temp[2];
        m2=temp[2]-temp[0];

     //差值取绝对值.
        m0=m0>0?m0-m0);
        m1=m1>0?m1-m1);
        m2=m2>0?m2-m2);

        if( m0>THRESHOLD  &&  m1>THRESHOLD  &&  m2>THRESHOLD )
            return 0;

    /*计算它们的平均值,同时赋给screen*/
        if(m0<m1)
        {
            if(m2<m0)
                screen.x=(temp[0]+temp[2])/2;//m2<m0<m1,即取误差最小的两个值的平均值
            else
                screen.x=(temp[0]+temp[1])/2;//m0<m2且m0<m1,这个基于什么原则取平均值,没看出来,只能知道m0是最小值。M2和M1之间关系不明。
        }
        else if(m2<m1)
            screen.x=(temp[0]+temp[2])/2;//m2<m1<m0,即取误差最小和和最大的两个值的平均值
        else
            screen.x=(temp[1]+temp[2])/2;//m1<m2,m1<m0,这个基于什么原则取平均值,没看出来,只能知道m1是最小值。M2和M0之间关系不明。


回复

使用道具 举报

发表于 2015-3-27 18:52:53 | 显示全部楼层
分组,计算每组的误差,选择误差较小的组取平均值
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|站点地图|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号-2 ) 大学生ARM嵌入式2群

GMT+8, 2020-9-24 12:20 , Processed in 0.129292 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表