[DSP/OT] funamental estimation from peak frequencies?
Does anyone know how I can get an f0 estimation from a list of... say... 5 peak frequencies of a real world signal?
Example:
Input: 101Hz 198.5Hz 303.2Hz 499.4Hz 601.1Hz
Output 100.276Hz
If I had exact harmonics, I could do greatest common divisor but... it doesn't work with real world peak frequencies which can be off by a percentage point.
If (as per your example), one of your peaks is known to be very close to f0;
- determine the lowest value
- divide each by the lowest number, and round to the nearest integer
- divide each input by its corresponding integer from step 2
- average the results of step 3
For your example inputs, that returns exactly 100.276Hz.
I apologize... in absence of the fundamental?
i remember an old thread with a similar question... but cant remember if there was a solution... bascially you want to near the values which are closest to each other until they match...
it is a bit a stochastic process... try this, if it doesnt match try that other one... first round all values to steps of 0.25, then 0.5, 1.0, 2.0 ...
Come to think of it, it's almost like an autocorrelation problem similar to tempo/beat extraction.
yes that was it, we had it regarding equalizing timeframes for something.
nick´s appoach sounds great btw. (using relations instead of real values), but of course only if you already have the fundamental. (i needed a while to figure both your posts but now i get it.)