Signal Processing Stack Exchange is a question and answer site for practitioners of the art and science of signal, image and video processing. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have got a signal which consists of zero crossings over discrete time and I would like to estimate the fundamental frequency (period) from this signal in order to remove noisy samples.

The signal is about 500 to 1500 samples long and has about 10-50 zero crossings, e.g. x[93] = 0; x[183] = 0; x[244]; x[282]; x[310]; x[439]; x[502]; x[515]; x[570]; x[590]; x[640]; x[635]; x[650]; x[710]; x[740]; x[835]; x[850]; x[905]; x[915]; x[980]; x[1050]; x[1110];

The output should be zero crossings again or their fundamental period, but without the "noise". I'm only interested in the position of the "new" zero crossings.

I'm also not quite sure, how to model a zero-crossing signal for further processing.

Thanks for any ideas.

share|improve this question
What kind of signal is it? A sine wave? – Deve Nov 2 '12 at 10:06
I don't have a signal form, only the zero crossings define my signal – the_max Nov 2 '12 at 10:07
This question seems to ask the same thing:… – Deve Nov 2 '12 at 12:23
@the_max: If you don't know the shape of the signal, then it's not possible to determine the fundamental frequency from the zero crossings. You could guess by trying to find repetitive patterns in the periods, but it still wouldn't necessarily be correct. – endolith Nov 2 '12 at 13:26
up vote 1 down vote accepted

In general, you can not determine period of a signal from just the zero crossings. If the signal has harmonic content, then a pitch detection/estimation algorithm, such as autocorrelation, might be one solution. If the signal is more spectrally pure (e.g. close to sinusoidal fundamental, little overtone or harmonic energy), then a suitable DSP band-pass filter applied before locating the zero-crossings may help get rid of "noisy" samples.

share|improve this answer
thanks for the idea and I've already tried this. I modelled each zerocrossing as an impulse, filtered the impulse sequence low pass and applied ACF, but it gives me wrong results because the there is some timing noise in the signal. I'm not quite sure if the filtering/impulse modelling is a good idea... – the_max Nov 4 '12 at 15:56
Instead of a non-specific low-pass filter, you might try convolving each impulse with an estimation of the timing error distribution. – hotpaw2 Nov 4 '12 at 19:31

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.