首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何计算一组循环数据的平均值?

如何计算一组循环数据的平均值?
EN

Stack Overflow用户
提问于 2009-01-29 14:15:19
回答 18查看 104K关注 0票数 160

我想计算一组循环数据的平均值。例如,我可能有几个指南针读数的样本。问题当然是如何处理环绕式。同样的算法可能对钟面也很有用。

实际的问题更复杂--在球面上或在一个“环绕”的代数空间中,统计意味着什么,例如,加法群mod n。答案可能不是唯一的,例如,359度和1度的平均值可能是0度或180度,但统计上看0看起来更好。

这对我来说是一个真正的编程问题,我试图让它看起来不仅仅是一个数学问题。

EN

回答 18

Stack Overflow用户

回答已采纳

发布于 2009-01-29 14:22:48

从角度计算单位向量,并取其平均值的角度。

票数 106
EN

Stack Overflow用户

发布于 2009-01-29 14:58:05

这个问题在布鲁斯·卡什在http://catless.ncl.ac.uk/Risks/7.44.html#subj4上提到的“球体上的统计”一书中进行了详细的研究,杰弗里·S·沃森,阿肯色大学数学科学讲座笔记,1983年约翰·威利父子公司。

从一组角度测量值ai 0<=i估计平均角度A的好方法

代码语言:javascript
复制
                   sum_i_from_1_to_N sin(a[i])
a = arctangent ---------------------------
                   sum_i_from_1_to_N cos(a[i])

starblue给出的方法在计算上是等价的,但他的理由更清晰,可能在编程上更有效,而且在零的情况下也能很好地工作,所以称赞他。

现在对这个主题进行了更详细的on Wikipedia探索,并结合其他用途,如小数部分。

票数 64
EN

Stack Overflow用户

发布于 2009-01-29 14:26:19

我看到了问题--例如,如果你有一个45‘的角度和一个315’的角度,那么“自然”的平均值应该是180',但你想要的值实际上是0‘。

我觉得星蓝说对了。只需计算每个角度的(x,y)笛卡尔坐标,并将得到的向量相加。最终向量的角度偏移量应该是您需要的结果。

代码语言:javascript
复制
x = y = 0
foreach angle {
    x += cos(angle)
    y += sin(angle)
}
average_angle = atan2(y, x)

我现在忽略了指南针方向从北开始,顺时针方向,而“正常”笛卡尔坐标沿着X轴从零开始,然后逆时针方向。不管怎样,数学应该以同样的方式计算出来。

票数 56
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/491738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档