野火电子论坛

 找回密码
 注册

扫一扫,访问微社区

查看: 2087|回复: 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-2-17 23:13 , Processed in 0.072502 second(s), 26 queries , Gzip On.

野火电子论坛

© 2014-2016 www.firebbs.cn

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