From: Andor on 13 Jan 2010 02:59 On 12 Jan., 19:48, Jerry Avins wrote:> Andor wrote: > > On 11 Jan., 16:16, Jerry Avins 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: > > >http://www.zhaw.ch/~bara/files/zero-crossings_example.png > > > 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. Regards, Andor From: Andor on 13 Jan 2010 05:45 On 11 Jan., 19:17, dvsarwate wrote:> On Jan 7, 9:59 am, Andor 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 :-). Regards, Andor First  |  Prev  |