Calculating Wingbeat Frequency From Accelerometer Data

Does anyone have any experience calculating WBF from ACC data? I'm trying to accomplish this in R. For the most part, I'm getting back pretty accurate number when going in to manually check its accuracy, but there are portions of the data where it will randomly generate very low WBF for short bouts of flight. I would chalk this up to gliding, but some of these low values encompass the whole flight duration.


This seems to only occur for short flight durations though (~4-6 seconds). To provide a bit more information, his flight data has been collected from bats.


Any R package or function suggestions or other software you have used to calculate this metric?


Thanks for any help!


No experience in this myself. Have you looked at references on swimming (diving) birds? I believe wingbeats have been derived from ACC data in studies of penguins and guillemots etc.



Sounds like an interesting problem and I would love to see the code you have come up with. Mega-chiropteran bats in my part of the world, usually get airborne by falling to get airspeed, which I'm guessing would look quite different on your accelerometer. 

Is your accelerometer triaxial and body mounted? 

Are you assuming flight because of body orientation?

Are you calculating VeDBA as part of your beat detection?

Is it possible your study subjects are hovering to feed for short flights which would require a steady head and body thus reducing the amplitude of movement or maybe increasing the wingbeats faster than your accelerometer sample rate?

Sorry for all the questions.

Hi Travis, 

I had similar problems for calculating traveling on land in seals ('steps', if you will) for short bouts of repetitive behaviours. Part of the problem is possibly with the window size that you are using to calculate WBF. Many of the algorithms have a window size (how many time points/samples you include) and some degree of overlap (how much of the adjacent data you are considering). If the bout is too small relative to the window size and overlap, the frequency detected during non-flying periods adjacent to those points will 'bleed' into the calculation (also referred to as spectral leakage) and you may not be able to accurately pull out the signal of wingbeats during these short periods. I would look at some of the swimming papers as Lars mentions above for resources and probably do a better job than me of explaining :) 

Are there other features from the accelerometry data that could be used to pull out these very short bouts of behaviour to classify them?