• STM32-遥感数据处理


    一. 简介

    在上篇文章中,以及知道如何采集遥感数据了,可是采集到的数据是0-4096范围内的,实际上,下边界不为0,上边界也不为4096。为了方便后续的处理,本文将采集到的遥感数据归一到0-100范围内。

    二. 遥感数据校准

    这个部分是必要的,可以确定真实情况下上下边界的数据。其具体做法为,连续采集一些边界数据,求和,取平均就可以了。具体做法如下。当采集到的数据靠近我们认为的边界时,就认为是有效数据,否则丢弃,其他四个边界的做法也是如此。

    /*XL方向校准*/
    void Rocker1CalibrationXL(void)
    {
        uint8_t i;
        uint32_t valueSum = 0;
        for(i = 0 ;i < 400; )
        {
            uint16_t value = getX1Value();
            if(value > 0xf600)
            {
                valueSum += value;
                i++;
            }
        }
        XOffSetL = valueSum / 400;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    三. 数据归一化

    这部分也是关键的一步。其具体做法分为如下几个步骤:

    1. 获取原始数据
    2. 计算原始数据到对应两边界直接的距离(也就是相减)
    3. 将计算得到的结果扩大100倍,然后除以两边界的差值
    4. 左 边加(100-右边) 除以二,得到最终结果
      具体代码实现如下
     XValue =  getX1Value();  //获取X方向遥感数值 
    if(XValue > XOffSetL)
          XtempL = 0;  /*小于左边界,直接复制为0*/
      else
          XtempL = XOffSetL - XValue ;
    if(XValue < XOffSetR)
          XtempR = 0;  /*大于右边界,直接复制为0*/
      else
          XtempR = XValue - XOffSetR;
     uint32_t XtL = XtempL * 100;
     uint32_t XtR = XtempR * 100;
     XtL = XtL / (XOffSetL - XOffSetR);
     XtR = XtR / (XOffSetL - XOffSetR);
     X = (XtL + (100 - XtR)) / 2;  /*结果为遥感到左边界的距离,0 - 100*/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    至此就完成啦。
    还有关注微信公众号 FPGA之旅

  • 相关阅读:
    Mybatis-Plus条件构造器QueryWrapper
    深度学习:资料整理
    【网页前端】HTML基本语法之排版标签和表单标签
    题目0117-斗地主2
    mongodb如何多表查询,如同时查询店铺以及里面对应的商品
    Go 语言编译环境
    JumpServer---堡垒机
    Vue 搭配 Spring MVC 创建一个 web 项目
    自定义实现基于注解的缓存使用
    Maya 2024 for Mac(3D建模软件)
  • 原文地址:https://blog.csdn.net/weixin_44678052/article/details/126131223