From: Andor on
On 12 Jan., 19:48, Jerry Avins <j...(a)> wrote:
> Andor wrote:
> > On 11 Jan., 16:16, Jerry Avins <j...(a)> wrote:
> >> Andor wrote:
> >>    ...
> >>> In the end I had to use 7th order polynomial interpolation FIR filters
> >>> on my test function to actually catch the zero-crossings using
> >>> upsampling by factor 4 (5th order was not enough). This can still be
> >>> implemented efficiently (8*3*1e9 = 24e9 MACS should easily be
> >>> computable in under a minute on a normal PC).
> >> I've been puzzling over this for a few days now. Set aside the search
> >> for actual locations of the zero crossings. If there are at least two
> >> samples in the period of the highest frequency present in the sampled
> >> signal, how can any zero crossing fail to be among those counted?
> > Like this:
> >
> > Plot of the function described above with f=0.98. The function has 80
> > zero-crossings in the displayed time window, the samples of the
> > function have exactly one zero-crossing.
> I see now, thanks. Very nice!
> What procedures fail if we count zero touchings as zero crossings? Does
> it come down to the difference between open and closed intervals?
> Maybe I don't see after all. are the samples close to but not actually
> on the axis? I see only a grapg, no equation. How does .98 come in?

Yup, the samples don't touch the axis. The equation for this function
can be found higher up in the thread. For convenience:

x(t) = sin(pi f t) + sin(pi (1-f) t) + eps s((1-f)/2 t)

where s(t) is the square-wave function with period 1 (replace with
truncated Fourier series to make x(t) bandlimited). x(t) is sampled
with sampling period T=1. The samples close to the axis have value eps
(in this example, eps = 0.02) and f=0.98.

From: Andor on
On 11 Jan., 19:17, dvsarwate <dvsarw...(a)> wrote:
> On Jan 7, 9:59 am, Andor <andor.bari...(a)> wrote:
> > I think the main problem is to find the rough location of the zero-
> > crossing in the sampled data. As my example shows, a zero-crossing of
> > the underlying sampled function will not necessarily show up as a
> > "zero-crossing" in the samples. I would opt for Ron's idea to use
> > quick polynomial interpolation with order >= 3 (can be implemented
> > with very small kernel FIR filters) to oversample the data by 4 or so
> > to find "zero-crossings" in the samples and then use the method of
> > sinc-interpolation outlined in your paper to find the exact location.
> > This reminds me of the old comp.dsp debate on the maximum number of
> > zero-crossings that a bandlimited function may have on any given
> > interval. As it turned out (I think Matt Timmermans came up with the
> > example of the prolate spheroidal wave functions), the number of zero-
> > crossings is not limited ...
> But if there could be infinitely many zero-crossings, then no matter
> how
> much we oversample, we could never be sure that we have found them
> all, could we?
> If a (low-pass) signal is truly band-limited to W Hz, meaning that
> X(f) = 0 for |f| > W, then the magnitude of its derivative is bounded
> by
> 2\pi W max |x(t)|  (cf. Temes, Barcilon, and Marshall, The
> optimization
> of bandlimited systems, Proc. IEEE, Feb. 1973).  So, depending on
> the sampling rate and the value of two successive positive samples,
> we can be sure in *some* cases that there is no zero-crossing between
> the two samples: the bound on how quickly x(t) can change does not
> allow for the possibility that the signal could dip down below zero in
> between the two positive samples.

Yes, nice Popper-esque argument :-).