houyawei 发表于 2024-5-29 08:53:41

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

工程里面需要做一个数据平均,本人没有系统学习过单片机。


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

单片机这样处理是不是不太好,大家一般怎样处理的

乘风飞扬 发表于 2024-5-29 09:09:40

单片机求平均值同样可以使用相加除以个数。
最好计算2的n次方个数据的平均值,这样就可以用右移的方法来代替除法提高计算速度。
相加结果右移一次等于除以2,右移2次等于除以4...右移n次等于除以2的n次方。

houyawei 发表于 2024-5-29 09:12:44

乘风飞扬 发表于 2024-5-29 09:09
单片机求平均值同样可以使用相加除以个数。
最好计算2的n次方个数据的平均值,这样就可以用右移的方法来代 ...

好滴谢谢,求平均值现在了解了。
还有就是怎么收集最新一段时间的数据,一直要抛弃旧数据,写入新数据。类似队列的先进先出

soma 发表于 2024-5-29 09:17:17

如果数据小做个数组,把数据写进去

_奶咖君_ 发表于 2024-5-29 09:25:11

上位机你都知道是队列,,下位机也一样啊,,上位机队列怎么实现的 下位机也可以类比的去做啊,,,你这个需求就正好是滑动平均滤波算法,,你也可以搜一搜这个词

houyawei 发表于 2024-5-29 09:25:51

soma 发表于 2024-5-29 09:17
如果数据小做个数组,把数据写进去

数组不太合适,因为要求最新一秒的数据。比如是A-A
每次来一次新数据,需要删掉A的值,然后A放入A,A放入A......A放最新数据

houyawei 发表于 2024-5-29 09:27:34

_奶咖君_ 发表于 2024-5-29 09:25
上位机你都知道是队列,,下位机也一样啊,,上位机队列怎么实现的 下位机也可以类比的去做啊,,,你这个 ...

好的我试试,我是想来问问,看看单片机有没有啥巧方法,不影响性能

_奶咖君_ 发表于 2024-5-29 09:31:09

houyawei 发表于 2024-5-29 09:27
好的我试试,我是想来问问,看看单片机有没有啥巧方法,不影响性能

不影响性能的也有,,,就是交给上位机来计算,,下位机只采集和传输数据。。考虑一下?

乘风飞扬 发表于 2024-5-29 09:32:15

houyawei 发表于 2024-5-29 09:25
数组不太合适,因为要求最新一秒的数据。比如是A-A
每次来一次新数据,需要删掉A的值,然后A ...

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

_奶咖君_ 发表于 2024-5-29 09:40:37

houyawei 发表于 2024-5-29 09:25
数组不太合适,因为要求最新一秒的数据。比如是A-A
每次来一次新数据,需要删掉A的值,然后A ...

删除 你可以换一个概念,,覆盖,,用新的数据覆盖老的数据
页: [1]
查看完整版本: 单片机怎么处理数据平均问题