Algorithm
Over the time interval to be averaged across, n measurements of wind direction (θ) will be made and two totals are accumulated without storage of the n individual values. At the end of the interval the calculations are as follows: with the average values of sinθ and cosθ defined as
Then the average wind direction is given via the four-quadrant arctan(x,y) function as
From twenty different functions for σθ using variables obtained in a single-pass of the wind direction data, Yamartino found the best function to be
where
The key here is to remember that sin2θ + cos2θ = 1 so that for example, with a constant wind direction at any value of θ, the value of will be zero, leading to a zero value for the standard deviation.
The use of alone produces a result close to that produced with a double-pass when the dispersion of angles is small (not crossing the discontinuity), but by construction it is always between 0 and 1. Taking the arcsine then produces the double-pass answer when there are just two equally common angles: in the extreme case of an oscillating wind blowing backwards and forwards, it produces a result of radians, i.e. a right angle. The final factor adjusts this figure upwards so that it produces the double-pass result of radians for an almost uniform distribution of angles across all directions, while making minimal change to results for small dispersions.
The theoretical maximum error against the correct double-pass σθ is therefore about 15% with an oscillating wind. Comparisons against Monte Carlo generated cases indicate that Yamartino's algorithm is within 2% for more realistic distributions.
A variant might be to weight each wind direction observation by the wind speed at that time.
Read more about this topic: Yamartino Method