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.

  • $\begingroup$ What kind of signal is it? A sine wave? $\endgroup$ – Deve Nov 2 '12 at 10:06
  • $\begingroup$ I don't have a signal form, only the zero crossings define my signal $\endgroup$ – the_max Nov 2 '12 at 10:07
  • $\begingroup$ This question seems to ask the same thing: dsp.stackexchange.com/questions/4886/… $\endgroup$ – Deve Nov 2 '12 at 12:23
  • $\begingroup$ @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. $\endgroup$ – endolith Nov 2 '12 at 13:26

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.

| improve this answer | |
  • $\begingroup$ 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... $\endgroup$ – the_max Nov 4 '12 at 15:56
  • $\begingroup$ Instead of a non-specific low-pass filter, you might try convolving each impulse with an estimation of the timing error distribution. $\endgroup$ – hotpaw2 Nov 4 '12 at 19:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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