2011-03-04 16 views
5

thể trùng lặp:
How do you calculate the average of a set of angles?Làm thế nào để tìm ra trung bình của một bộ vòng bi

Nếu tôi có một bộ vòng bi, dao động 1-360, làm thế nào tôi có thể tìm ra Trung bình cộng? Thông thường để tìm trung bình sẽ thêm tất cả lên và chia cho số lượng các mặt hàng. Vấn đề ở đây là làm điều đó trong trường hợp [1, 359], 2 vòng bi, sẽ dẫn đến kết quả là 180, mà trên thực tế nên là 360. Bất kỳ ý tưởng nào?

Trả lời

7

Trình bày các góc như vectơ với Norm = 1 và trung bình tổng.

x1 = {cos(a),sin(a)} 

x2 = {cos(b),sin(b)} 

(x1+x2)/2 = {(cos(a)+cos(b))/2,(sin(a)+sin(b))/2} 

có nghĩa là góc cho giá trị trung bình là

atan2((sin(a)+sin(b)) /(cos(a)+cos(b))) 

Chỉ cần cẩn thận với việc kiểm soát tràn có thể khi mẫu số là gần bằng không.

enter image description here

0

Vì vậy, những gì bạn muốn là giữa hai vòng bi - điều gì xảy ra nếu bạn có {90, 270}? Câu trả lời mong muốn là 0 hay 180? Đây là một cái gì đó để xem xét .. cũng là những gì giữa ba vòng bi?

Một điều bạn có thể làm là:

  • Lấy hai vòng bi đầu tiên trong thiết lập của bạn
  • Làm việc ra sự khác biệt giữa hai trong hai hướng (tức là [1, 359] sẽ cung cấp cho 2 độ trong một hướng, và 358 hướng khác)
  • Nếu bạn muốn góc mong muốn là giữa điểm yếu nhất của hai, hãy coi đó là sự khác biệt của bạn và thêm vào phần lớn ngược chiều kim đồng hồ (ví dụ: 359)
  • Sử dụng tính năng này làm ổ đỡ mới và ổ tiếp theo (tức là bộ 3) đổ chuông, và lặp lại, cho đến khi tất cả được 'middled'.

Tắt đầu, tôi không nghĩ điều này là công bằng, có thể nó sẽ thiên vị theo một hướng mặc dù (có thể tùy thuộc vào giá trị sau này trong tập của bạn).

1

Nó không rõ ràng từ câu hỏi của bạn những gì bạn đang cố gắng để xác định "trung bình" được ... cho các hướng dẫn trên một vòng tròn không có khái niệm rõ ràng rõ ràng về trung bình.

Một cách diễn giải là giá trị x phù hợp nhất với tập hợp các giá trị được cung cấp, theo nghĩa tối thiểu, nơi khoảng cách giữa hai vòng bi được xác định là góc nhỏ nhất giữa chúng. Dưới đây là mã để tính mức trung bình này:

In[2]:= CircDist[a_, b_] := 180 - Mod[180 + a - b, 360] 

In[6]:= Average[bearings_] := 
x /. NMinimize[ 
    Sum[CircDist[x, bearings[[i]]]^2, {i, 1, Length[bearings]}], 
    x][[2]] 

In[10]:= Average[{1, 359}] 

Out[10]= -3.61294*10^-15 
+0

+1 Hoặc BTW, định nghĩa khác cho trung bình (hài hòa, hình học, số học, v.v ...). Nó phụ thuộc vào cách bạn muốn sử dụng nó. –