请教一个从数组中取分布的算法,根据出现的密集度来获得最终值。

ah__fu 2007-03-08 02:14:18
大家好:
我公司有一个检测系统,会在每个时间间隔获得一个检测值。但是由于外界原因,常常会有误差值存在。误差值的产生是随机的,但是数量较小。
由于以前是取最大值作为最终检测结果,现在改进为:根据检测的变化曲线,取分布密集的区域作为检测结果。

请看下面这些数值:
5
6
9
10
18
32
67
75
77
94

人脑可以分析出来,5,6,9,10,18这段是分布比较密集的,结果可以取这段的平均值。

请问,如何实现一个算法对数组取分布呢?谢谢!
...全文
418 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ah__fu 2007-03-09
  • 打赏
  • 举报
回复
我自己搞定了
谢谢大家!
http://blog.csdn.net/ah__fu/archive/2007/03/09/1525300.aspx
GetTheWorld 2007-03-08
  • 打赏
  • 举报
回复
先定义一个阈值 前后的差值必须小于该阈值

满足的组合再比较方差大小 最小的该就是最密集的巴
ah__fu 2007-03-08
  • 打赏
  • 举报
回复
初步的想法是,先取出最密集的N个数,然后取这N个数的平均值作为检测值。
如果把这些数画成一个曲线,就可以看出,最密集的地方,曲线的斜度都是很小的。
关键就在于,如何找出最密集的N个数。
上面的例子中,(20, 23, 25, 26)这组数也是很密集的,但是(67, 69, 69, 72)显得更密集。
fosjos 2007-03-08
  • 打赏
  • 举报
回复
四个数是这个集合,但是为什么不是3个,总得有个限制吧
密集的话,比较(An-A1)/(n-1)就差不多了吧,这样比较简单
ah__fu 2007-03-08
  • 打赏
  • 举报
回复
不是规定取多少个的问题,而是从数据的曲线里面取分布教密集的。
看下面这些数值:
int Data[] = {2, 7, 8, 20, 23, 25, 26, 32, 37, 38, 44, 52, 67, 69, 69, 72, 81, 88, 88, 92};
人脑分析出:(67, 69, 69, 72)这四个数分布最密集。
如何取出这些值呢?
fosjos 2007-03-08
  • 打赏
  • 举报
回复
为什么不取5,6,9,10呢
如果规定取5个的话,可以计算每5个两端数值的差

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧