Skip to content
Snippets Groups Projects
Commit d501d077 authored by Raphael's avatar Raphael
Browse files

angular mean and spread

parent 7bb5d8ab
No related branches found
No related tags found
1 merge request!6Develop
.idea/*
build/
skais.egg-info/
*.coverage
\ No newline at end of file
import numpy as np
def angular_dispersion(x):
n = len(x)
X = np.sum(np.cos(x)) / n
Y = np.sum(np.sin(x)) / n
r = np.sqrt(X ** 2 + Y ** 2)
return r
def angular_mean(x):
n = len(x)
X = np.sum(np.cos(x)) / n
Y = np.sum(np.sin(x)) / n
theta = abs(np.arctan2(X, Y))
if Y > 0 and X > 0:
return theta
if Y > 0 >= X:
return np.pi/2 - theta
if Y <= 0 < X:
return np.pi + theta
else:
return 2 * np.pi + theta
import unittest
import numpy as np
from skais.stats.angluar import angular_mean
class TestAngular(unittest.TestCase):
def test_angular_mean_simple(self):
x = np.radians(np.array([1, 359]))
self.assertEqual(0.0, angular_mean(x))
def test_angular_mean_simple_2(self):
x = np.radians(np.array([180, 180, 180, 180, 179, 181]))
self.assertEqual(np.pi, angular_mean(x))
def test_angular_mean_simple_3(self):
x = np.radians(np.array([0, 0, 0, 0, 359, 1]))
self.assertEqual(0.0, angular_mean(x))
def test_angular_mean_first_quadrant(self):
x = np.radians(np.array([43, 44, 45, 46, 47]))
self.assertEqual(np.pi / 4, angular_mean(x))
def test_angular_mean_second_quadrant(self):
x = np.radians(np.array([133, 134, 135, 136, 137]))
self.assertEqual(3*np.pi / 4, angular_mean(x))
def test_angular_mean_third_quadrant(self):
x = np.radians(np.array([223, 224, 225, 226, 227]))
self.assertEqual(5*np.pi / 4, angular_mean(x))
def test_angular_mean_fourth_quadrant(self):
x = np.radians(np.array([313, 314, 315, 316, 317]))
self.assertEqual(7*np.pi / 4, angular_mean(x))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment