硬汉嵌入式论坛

 找回密码
 立即注册
查看: 390|回复: 3
收起左侧

[技术讨论] 预测数据A在一小时内贴近采集数据B的算法

[复制链接]

35

主题

106

回帖

211

积分

高级会员

积分
211
发表于 2023-7-27 22:13:55 | 显示全部楼层 |阅读模式
预测数据A;检测的数据B;定时器延时1分钟执行;
static bool flag = true;  /*flag是为了保证斜率不变的*/
static float middle = 0.0;



     if( A != B )
     {
          if( flag )
            {
                middle = 0.0;
               middle = ( B- A ) / 60.0f;  /* 由于定时器每1分钟执行一次,将两者之间的差值分成60份,即在1小时将A调整至B */
                flag = false;
            }
            A += middle;
        }
        if( B <= ( A * 1.1f)  &&  B >= ( A * 0.9f))  /* A与B相临近时,把标志位设置为true,为了防止数据突变时,flag为false时middle不能改变 */
        {
            flag = true;
        }


此方法不稳定:程序一开始假如 B > A 时, if( flag )成立,middle是正值,flag = false;A += middle,A逐渐向B靠近。万一检测数据有干扰波动,B < A了,由于flag 为false,无法改变middle,导致A += middle后A越来越大。请问有什么可以改进的方法吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2023-7-28 09:35:42 | 显示全部楼层
数据B的波形是已知的吗,如果是已知的,可以使用自适应滤波,这个就是专门用于逼近已知波形的。
回复

使用道具 举报

35

主题

106

回帖

211

积分

高级会员

积分
211
 楼主| 发表于 2023-7-28 10:55:17 | 显示全部楼层
eric2013 发表于 2023-7-28 09:35
数据B的波形是已知的吗,如果是已知的,可以使用自适应滤波,这个就是专门用于逼近已知波形的。

以温度检测为例(A和B是一个具体的数值):A是预测的数值,不准确;B是用传感器检测的数据,可靠准确。在1小时(即设定时间)内,预测值A逐渐靠近检测值B
回复

使用道具 举报

0

主题

43

回帖

43

积分

新手上路

积分
43
发表于 2023-7-28 11:37:32 | 显示全部楼层
卡尔曼滤波算法
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-28 23:21 , Processed in 0.154483 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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