这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 请教:C中求平均值问题!

共6条 1/1 1 跳转至

请教:C中求平均值问题!

菜鸟
2011-05-01 12:35:48     打赏
我要求若干个数的平均值,但我并不是若干个数相加后再除以数据个数,因为我每次得到的数据是16bit的,且至少上万个这样的数据,所以用常规方法是不行的。
我是想把第一个数加上第二次数求平均值后,再用这个平均值与得到的第三个数,再求平均值,依次类推。最终得到的结果
是和 N个数相加后再除以N 是一样的。
请教高手,怎么实现这种算法。
谢谢!



关键词: 请教     中求     平均值     问题    

高工
2011-05-01 14:18:01     打赏
2楼
你这个求得不是平均数,而是做了个滤波器。
因为每个数对最终值的加权系数是不一样的,第一个数是1/2^(几万),最后一个数是1/2

工程师
2011-05-01 16:06:09     打赏
3楼
设求平均值的数据个数为N,可以先将N个数相加,再除以N,这样做的问题是N个数相加会溢出,并且进位需要用很多位表示。另外一种做法是每个数先除以N,之后再相加,这样做的问题是除法会舍位,当N很大时,舍位很严重。所以,建议采用折中的办法。即将N个数分成N=M*K个数,每M个数相加后除以N。当然,M个数相加要考虑进位问题,进位可以用另外一个数表示,M的选择以进位的位数相关。另外,除数N最好选择为2^x次方。

专家
2011-05-01 20:02:57     打赏
4楼
楼主:你的这个不是求平均值哦!仅仅是一个滤波而已!

菜鸟
2011-05-02 09:30:47     打赏
5楼

请大家想一下:如果我想测试出软件中,某段代码运行的平均时间,假如我运行整个软件10分钟(这个时间里,进行软件功能的正常操作),可能我想测试那段代码,已经运行了几十万,几百万次了,这时怎么算时间平均值?条件是:被测的这段代码每执行一次的时间我是知道的,保存在一个16bit的变量里,当前被测代码运行了多少次是知道的,保存在32bit的变量里。
请热心的朋友说具体一点啊,方便的话,列个C代码,可能会更容易明白啊!多谢!


高工
2011-05-02 12:41:37     打赏
6楼

如果不要求实时的话,把数据先保存到计算机上,然后再计算,就比较准确了


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]