<br><br><div><span class="gmail_quote">On 3/15/07, <b class="gmail_sendername">Warren Focke</b> <<a href="mailto:focke@slac.stanford.edu">focke@slac.stanford.edu</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br><br>On Wed, 14 Mar 2007, Charles R Harris wrote:<br><br>> On 3/14/07, Ray Schumacher <<a href="mailto:subscriber100@rjs.org">subscriber100@rjs.org</a>> wrote:<br>> ><br>> > What I had been doing is a 2048 N full real_FFT with a Hann window, and
<br>> > further analyzing the side lobe/bin energy (via linear interp) to try to<br>> > more precisely determine the f within the peak's bin. (How legitimately<br>> > valuable that is I'm not sure... IANAM)
<br>><br>><br>> That's usually fine. You might want to zero fill to get more samples through<br>> the band. It would help if you gave the sample frequency in Hz too. Anyway,<br>> unless time is important, I would just zero fill by a factor of 4-8 and
<br>> transform. You can get the same effect with a chirp-z transform, but again<br>> this is depends on how much programming work you want to do. If you just<br>> have a couple of lines in the band that you want to locate you could also
<br>> try maximum entropy methods.<br><br>Or do<br><br>1) explicit multipy by the transform matrix but only use a few rows.<br><br>but evaluate the transform matrix on a frequency grid finer than the<br>1/(2048*tsamp) that is actually independent.  Then fit sin(f)/f to the
<br>power spectrum. </blockquote><div><br>You can actually zero fill by a factor of two, then build optimum least  squares interpolators for bandlimited signals using a reasonable number of sample around each frequency interval. The result can be fitted to single precision accuracy with a 9'th degree polynomial and an ordinary zero solver used on the derivative. Works well, I did this some 20 years ago as part of a package for fourier spectroscopy, but it is probably more work than warranted for the present case.
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Either of these should give better interpolation than<br>linear.  I've seen this done (and pass peer review) to determine pulsar
<br>frequencies.  I also remain unconvinced that interpolation provides a<br>better result, but that can be determined by analyzing fake data with a<br>known frequency.<br><br>If you're trying to determine the significance of the result, the fit
<br>should somehow take into account the fact that the interpolated data<br>points are not real degrees of freedom.  But your power estimates are<br>already not independent since you've applied a Hann window.  Probably
<br>should also fit to the line response of a Hann window rather than<br>sin(f)/f. </blockquote><div><br>Sinc interpolation will work fine for the windowed spectrum as it contains the same range of frequencies as the original. Where you can gain something is explicitly interpolating the unwindowed spectrum with the Hann, or stronger, window. Because the window functions fall off much faster than the sinc you don't need to use so many points in the convolution.
<br></div><br>Chuck<br></div><br>