打印

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

[复制链接]
255|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
第8号打板工|  楼主 | 2019-11-28 09:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
函数名: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之间关系不明。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

393

主题

393

帖子

0

粉丝