文号
t67764
阅读
27639
回复
27
收藏
15
小学数学题——关于角度的平均,考考大家
2014/10/31
IP:四川
对一个角度进行10次测量,然后取平均数。现在问题来了,假设角度接近360度,测量误差随机但不超过90度,请讨论怎样来求这个平均数。

提示:有可能其中有1个,或者几个数跨越0度线,平均后就差得远了。例如,其中如果有5个10度左右,有5个350度左右,平均的结果是180度。
[ 修改于11年1个月前 - 2015/11/03 05:20:20 ]
来自:
数理化/数学
27
虎哥作者
12年2个月前IP:四川
728786
6楼
kc人民的老朋友马主任说过,平均是小学的知识,但恰恰没讲角度的平均。正规的做法是求单位矢量,然后进行矢量的所谓平均,再反求角度,这是大学工程数学的知识了。

我想说,但是,在计算机上算三角函数有较大的资源开销,尤其是平均前数据速率非常高,需要厉害的硬件,这就制约了矢量天分的价格。所以咱们得用小学知识来解决这个问题。
引用
评论
虎哥作者
12年1个月前修改于 12年1个月前IP:四川
729197
11楼
如果不按小学的做,就是要写出算法。

设角度为δi,i=1,2,3……

首先判断|δi-δ(i+1)|是否大于180度。

如果大于,则比较δi,δ(i+1)的大小

    然后把大的那个取出来,减360(或者取小的,加360),赋值回去

如果小于,则不做处理。

然后加起来,平均。

结果如果有负号,加360.
引用
评论
1
虎哥作者
12年1个月前IP:四川
730810
16楼
数学嘛,就是要抽象,解决普适问题。
这个已经搞进FPGA了,实践证明可行。
引用
评论
虎哥作者
11年11个月前IP:四川
742798
17楼
想起一件事情,我在11楼写出的算法,经过FPGA实际验证,有重大问题。

而乃们——居然都不说话。
引用
评论
虎哥作者
11年11个月前IP:四川
742799
18楼
什么样的重大问题呢?那就是只有当正负值交替出现的时候,结果才正确。

如果δ1,δ2满足处理条件,而δi,i=3,4,5…都是350多度,则平均的结果将为330度左右,显然是不正确的。

算法修正如下:

设角度为δi,i=1,2,3……

首先,依次判断|δi-δ(i+1)|,i=1,2,3……是否大于180度。

只要有一次得到大于180度的结果,则认为整组数据需要处理(此时原始角度数据一定远离180度)。

依次判断每个角度是否满足

δi>180

对所有大于180度的角度,减360度。

然后加起来,平均。

结果如果有负号,加360.

如果整组角度没有任何两个之差大于180度,则不需处理,直接平均。
引用
评论
虎哥作者
11年11个月前IP:四川
743355
20楼
18楼的计算过程,经程序验证,是可行的。

但是这个算法不严谨。它只对数据比较集中的情况有效。

当数据不集中时,例如,30度,60度,90度……时,必须增加比较首尾两个数。

事实上,应当进行交叉比对才严谨。

楼上的方法是非常有效的。
引用
评论
虎哥作者
11年1个月前IP:四川
795427
26楼
引用 refinder:
你们楼上的算法都不对,无法具体问题具体应对。看我的:
1. 如果有一些数据落在Y轴左侧和右侧,那么分别找出左侧和右侧离中心0度(即笛卡尔坐标系中0,1矢量的方向)最远的角度。记录为theta1和theta2
1.5 如果abs(thet...
不好意思没看懂,请问:
2,比较两个角度谁离0更近,
这句是啥意思。
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的