搜索
bottom↓
回复: 11

单片机 C求滑动平均值算法

[复制链接]

出0入0汤圆

发表于 2010-5-23 14:58:47 | 显示全部楼层 |阅读模式

(原文件名:示意图.jpg)
如上图。
被测定的数据时递增的,只加不减。比如电表、水表的示值,比如超市收银员的收的钱...
需要测定每个15分钟的数据增量平均值的最大值。这每个15分钟的平均值采用滑动方式,比如第0~15分钟、第1~16分钟、第2~17分钟。。。然后算出其中一个最大平均值,保存。
这样,一个数据项需要保存16次。我现在有近100项这样的数据,那么我需要消耗的RAM就是100 * 16, 数据量很恐怖啊?

有没有更节约内存的算法呢?

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2010-5-23 15:05:23 | 显示全部楼层
最大平均值...

又最大又平均

出0入0汤圆

 楼主| 发表于 2010-5-23 15:11:52 | 显示全部楼层
每个时间段,都有一个平均值,于是有了很多平均值。

求最大的平均值。

呵呵

出0入0汤圆

发表于 2010-5-23 15:50:20 | 显示全部楼层
从你的描述看,你的数据的长度可能是一个字节,每隔一分钟采样一次。

建一个16个元素的一维数组如x[10] 再加一个存放最大值的变量y就行了。

总共用16+1=17个RAM

将数据存放数组

第一步求出0-15分钟的平均值存入y

第二步将第16分钟的数据存入原第0分钟的位置,求平均值,这个平均值跟y比较,将大者存回y.

之后都用第二步同样的方法(将最新的数据覆盖最旧的那个数据),以此类推。

最后的y就是你的要值。

出0入0汤圆

发表于 2010-5-23 15:54:50 | 显示全部楼层
建立一个环形队列,队列单无个数为你要求的平均值的个数.
用一个变量保存累加和,每次计算时,把除头的数据从累加和中减去,再把新数据加入队尾,并在累加和中加入该新数据,队列指针指向下一个单元.
另用一个变量来保存当前的平均值最大值,当新的平均值大于该值时,存入新的值.
这样你可以用几乎最小的内存跟最小的运算量来实现.

DIM Queue[N];
DIM Current;

Sumup = Sumup - Queue[Current];
Sumup = Sumup + NewData;
Queue[Current] = NewData;
Current++;
if (Current >= N) Current = 0;

Average = Sumup / N;
if(Average > MaxAverage) MaxAverage = Average;

看看有没有人能有更好的办法.

出0入0汤圆

发表于 2010-5-23 16:06:59 | 显示全部楼层
2个数组,一个存16分钟的数据,一个存计算出来的平均值。

出0入0汤圆

 楼主| 发表于 2010-5-23 17:07:48 | 显示全部楼层
网上找了份文档,感觉不是很好,但提供了一种思路
点击此处下载 ourdev_556313.pdf(文件大小:25K) (原文件名:单片机系统中的率表算法.pdf)

出0入0汤圆

 楼主| 发表于 2010-5-24 09:04:59 | 显示全部楼层
别沉下

出0入0汤圆

发表于 2010-5-24 10:25:48 | 显示全部楼层
楼主好啊!
还在想这个问题啊!

出0入0汤圆

 楼主| 发表于 2010-5-24 13:30:06 | 显示全部楼层
这不是没想到好办法么

出0入296汤圆

发表于 2010-5-24 14:14:53 | 显示全部楼层
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=903557&bbs_page_no=3&bbs_id=1038

出0入0汤圆

发表于 2010-5-24 15:18:41 | 显示全部楼层
网上找了份文档,感觉不是很好,但提供了一种思路
点击此处下载 ourdev_556313.pdf(文件大小:25K) (原文件名:单片机系统中的率表算法.pdf)

这个算法我觉得可能会造成比较大的累计误差。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-21 06:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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