找回密码
 立即注册
查看: 261|回复: 9

单片机怎么处理数据平均问题

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:37
  • 最近打卡:2025-04-27 18:22:16

18

主题

30

回帖

476

积分

中级会员

积分
476
发表于 2024-5-29 08:53:41 | 显示全部楼层 |阅读模式
工程里面需要做一个数据平均,本人没有系统学习过单片机。


如果是上位机上可以用队列,数据先进先出,队列里面数据相加除以个数就是平均值,数据不会有太大延迟性。最终算的是最新一秒数据的平均值,每秒大概100组数据。

单片机这样处理是不是不太好,大家一般怎样处理的
QT上位机小佬,努力学习嵌入式中,感谢各位大佬指导
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6845

积分

论坛元老

积分
6845
发表于 2024-5-29 09:09:40 | 显示全部楼层
单片机求平均值同样可以使用相加除以个数。
最好计算2的n次方个数据的平均值,这样就可以用右移的方法来代替除法提高计算速度。
相加结果右移一次等于除以2,右移2次等于除以4...右移n次等于除以2的n次方。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:37
  • 最近打卡:2025-04-27 18:22:16

18

主题

30

回帖

476

积分

中级会员

积分
476
发表于 2024-5-29 09:12:44 | 显示全部楼层
乘风*** 发表于 2024-5-29 09:09
单片机求平均值同样可以使用相加除以个数。
最好计算2的n次方个数据的平均值,这样就可以用右移的方法来代 ...

好滴谢谢,求平均值现在了解了。
还有就是怎么收集最新一段时间的数据,一直要抛弃旧数据,写入新数据。类似队列的先进先出
QT上位机小佬,努力学习嵌入式中,感谢各位大佬指导
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:425
  • 最近打卡:2025-05-04 00:16:27
已绑定手机

19

主题

3191

回帖

4930

积分

论坛元老

积分
4930
发表于 2024-5-29 09:17:17 | 显示全部楼层
如果数据小做个数组,把数据写进去
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2024-5-29 09:25:11 | 显示全部楼层
上位机你都知道是队列,,下位机也一样啊,,上位机队列怎么实现的 下位机也可以类比的去做啊,,,你这个需求就正好是滑动平均滤波算法,,你也可以搜一搜这个词
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:37
  • 最近打卡:2025-04-27 18:22:16

18

主题

30

回帖

476

积分

中级会员

积分
476
发表于 2024-5-29 09:25:51 | 显示全部楼层
so*** 发表于 2024-5-29 09:17
如果数据小做个数组,把数据写进去

数组不太合适,因为要求最新一秒的数据。比如是A[0]-A[m]
每次来一次新数据,需要删掉A[0]的值,然后A[1]放入A[0],A[2]放入A[1]......A[m]放最新数据
QT上位机小佬,努力学习嵌入式中,感谢各位大佬指导
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:37
  • 最近打卡:2025-04-27 18:22:16

18

主题

30

回帖

476

积分

中级会员

积分
476
发表于 2024-5-29 09:27:34 | 显示全部楼层
_奶*** 发表于 2024-5-29 09:25
上位机你都知道是队列,,下位机也一样啊,,上位机队列怎么实现的 下位机也可以类比的去做啊,,,你这个 ...

好的我试试,我是想来问问,看看单片机有没有啥巧方法,不影响性能
QT上位机小佬,努力学习嵌入式中,感谢各位大佬指导
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2024-5-29 09:31:09 | 显示全部楼层
houy*** 发表于 2024-5-29 09:27
好的我试试,我是想来问问,看看单片机有没有啥巧方法,不影响性能

不影响性能的也有,,,就是交给上位机来计算,,下位机只采集和传输数据。。考虑一下?
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6845

积分

论坛元老

积分
6845
发表于 2024-5-29 09:32:15 | 显示全部楼层
houy*** 发表于 2024-5-29 09:25
数组不太合适,因为要求最新一秒的数据。比如是A[0]-A[m]
每次来一次新数据,需要删掉A[0]的值,然后A[1] ...

使用数组是可以的,循环覆盖。
数据保存到数组结尾后又从头开始,这样就可以用新数据替代最老数据。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2024-5-29 09:40:37 | 显示全部楼层
houy*** 发表于 2024-5-29 09:25
数组不太合适,因为要求最新一秒的数据。比如是A[0]-A[m]
每次来一次新数据,需要删掉A[0]的值,然后A[1] ...

删除 你可以换一个概念,,覆盖,,用新的数据覆盖老的数据
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-4 05:46 , Processed in 0.227885 second(s), 111 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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