I am taking samples at 30Hz of a signal which is a slowly-varying sinewave.
The period of the sinewave is expected to drift slowly, but will always be somewhere between 0.5s and 2s.
I would like calculate a estimate of the period/frequency of the sinewave, from just the last 1s of data (i.e. the last 30 samples).
I've tried Discrete Fourier Transform, but from what I can tell it doesn't behave well when you have less than a whole cycle sampled.
A naive approach is just to measure the time since the amplitude was roughly where it is at the current sample (two times ago), but that will get fiddly if I happen to be exactly at a maxima with the current sample.
Are there any other approaches I should be trying?



