Reply by dbd March 12, 20082008-03-12
On Mar 12, 10:02 am, Eric Jacobsen <eric.jacob...@ieee.org> wrote:

> ... > Pretty cool stuff, I think, and I think it could definitely be useful > if there's only time/resources to compute a length-N FFT but you need > to consider more than N points in the input. > > Eric Jacobsen > Minister of Algorithms > Abineau Communicationshttp://www.ericjacobsen.org
This is also the basis of FFT based polyphase filters when the filter shape requires more coefficients than the transform size. (The transform size determines the number of phases.) Dale B. Dalrymple
Reply by Ron N. March 12, 20082008-03-12
On Mar 10, 11:17 pm, dbd <d...@ieee.org> wrote:
> This is what is done in synchronous sampling. When the sample > frequency can be controlled to be a multiple of a fundamental > frequency, say by phase locking to a 1 per revolution tach signal, > samples can be wrapped many times to give very sharp responses at the > bin centers where the harmonics lay and reject other signals. harris > uses the term 'folding' instead of 'wrapping', perhaps because of the > use of 'unwrapping' in a different DSP context.
I have a slight preference for the term "wrapping" for continuing the data with the same phase at the opposite end of the window. The term "folding" more implies the reflection of the data at the same edge, thus reversing the phase. And unwrapping time domain transients after an IFFT is a similar problem to unwrapping phase in the frequency domain: in order to make a transient pulse or phase curve continuous, on moves a chunk of the result outside the range [-pi..pi] or [0..(n-1)] IMHO. YMMV. -- rhn A.T nicholson d.0.t C-o-M
Reply by Eric Jacobsen March 12, 20082008-03-12
On Tue, 11 Mar 2008 00:17:41 -0700 (PDT), dbd <dbd@ieee.org> wrote:

>On Mar 10, 10:00 pm, "Ron N." <rhnlo...@yahoo.com> wrote: >> ... >> When your >> rectangular data window becomes longer than your FFT, wrap >> the extra data around the FFT aperture circularly. You will >> find that the sidelobe behavior of sinusoids wrapped in this >> manner continues to follow your "steady, predictable, >> analyzable trend". >> >> But I'm not sure where this procedure would be actually >> useful. >> >> IMHO. YMMV. >> -- >> rhn A.T nicholson d.0.t C-o-M >> http://www.nicholson.com/rhn/dsp.html
That's pretty cool, I hadn't realized that, but it does make sense.
>This is what is done in synchronous sampling. When the sample >frequency can be controlled to be a multiple of a fundamental >frequency, say by phase locking to a 1 per revolution tach signal, >samples can be wrapped many times to give very sharp responses at the >bin centers where the harmonics lay and reject other signals. harris >uses the term 'folding' instead of 'wrapping', perhaps because of the >use of 'unwrapping' in a different DSP context. > >Dale B. Dalrymple
Yes, and it's not too hard to see, from Ron's description above, that once you've fully 'folded' an aperture, i.e., you're lapping 2N samples into a length-N transform, that you're just adding multiple instances of input windows together coherently wrt the transform basis functions. For example, if there's a sinusoid with M cycles/aperture, i.e., M cycles over N samples, breaking a length 2N vector in two halves and adding them together will coherently add the sinusoids. So the FFT output will still have a happy, sharp, spike at bin M. This does extend cyclically so that whenever the overlaps (or folds) reach integer numbers of the FFT length, 2M, 3M, ... KM, the same thing happens. It's not hard to see that the 'reverse-zero-padding' with non-integer "folds" is an extension of interpreting the effects of zero padding, as Ron described. Pretty cool stuff, I think, and I think it could definitely be useful if there's only time/resources to compute a length-N FFT but you need to consider more than N points in the input. Eric Jacobsen Minister of Algorithms Abineau Communications http://www.ericjacobsen.org
Reply by dbd March 11, 20082008-03-11
On Mar 10, 10:00 pm, "Ron N." <rhnlo...@yahoo.com> wrote:
> ... > When your > rectangular data window becomes longer than your FFT, wrap > the extra data around the FFT aperture circularly. You will > find that the sidelobe behavior of sinusoids wrapped in this > manner continues to follow your "steady, predictable, > analyzable trend". > > But I'm not sure where this procedure would be actually > useful. > > IMHO. YMMV. > -- > rhn A.T nicholson d.0.t C-o-M > http://www.nicholson.com/rhn/dsp.html
This is what is done in synchronous sampling. When the sample frequency can be controlled to be a multiple of a fundamental frequency, say by phase locking to a 1 per revolution tach signal, samples can be wrapped many times to give very sharp responses at the bin centers where the harmonics lay and reject other signals. harris uses the term 'folding' instead of 'wrapping', perhaps because of the use of 'unwrapping' in a different DSP context. Dale B. Dalrymple
Reply by Ron N. March 11, 20082008-03-11
On Mar 10, 8:57 am, Eric Jacobsen <eric.jacob...@ieee.org> wrote:
> On Mon, 10 Mar 2008 01:48:17 -0700 (PDT), "Ron N." > > > > <rhnlo...@yahoo.com> wrote: > >On Mar 9, 9:41 pm, "Fred Marshall" <fmarshallx@remove_the_x.acm.org> > >wrote: > >> "Ron N." <rhnlo...@yahoo.com> wrote in message > > >>news:bc1bbe96-e40a-4d0c-8d24-8c9994bbddca@e25g2000prg.googlegroups.com... > > >> > Zero padding is equivalent to applying a rectangular window. > > >> I don't see how..... assuming that the rectangular window has already been > >> applied then what does zero padding do? > > >Zero padding n data samples before a transform is equivalent > >to applying a rectangular window of length n inside a > >transform of length greater than n. The zero padding > >causes zero-valued points to be represented in the > >longer transform results, same as a rectangular window. > > >IMHO. YMMV. > > I agree completely and this is why I claim that the FFT has "inherent" > rectangular windowing; if you watch the behavior of the sidelobes as > you analyse the effects of the rectangular window from say 4:1 > oversampled from zero-padding down to a few samples zero-padded then > down to no zero-padding, the resampling of the sidelobes follows a > steady, predictable, analyzable trend.
If you want an interesting experiment, you can even take the number of zero-padded samples below zero. How? As the number of zero-padded samples gets smaller, the length of your non-zeroed data rectangle gets longer. Continue. When you get to zero zero-padding your rectangular window will be the same length as your FFT. Continue. When your rectangular data window becomes longer than your FFT, wrap the extra data around the FFT aperture circularly. You will find that the sidelobe behavior of sinusoids wrapped in this manner continues to follow your "steady, predictable, analyzable trend". But I'm not sure where this procedure would be actually useful. IMHO. YMMV. -- rhn A.T nicholson d.0.t C-o-M http://www.nicholson.com/rhn/dsp.html
Reply by Fred Marshall March 10, 20082008-03-10
"dbd" <dbd@ieee.org> wrote in message 
news:acdc86a8-85d0-451b-8da7-a59ff018cb2f@s13g2000prd.googlegroups.com...
> On Mar 10, 12:40 pm, "Fred Marshall" <fmarshallx@remove_the_x.acm.org> > wrote: >> "dbd" <d...@ieee.org> wrote in message > >> >> > Windowing and zero-padding are functions that can be usefully defined >> > as processes that use multiplies. They can be efficiently performed by >> > operations not performing trivial multiplies. >> >> > Dale B. Dalrymple >> >> All fine except you didn't describe how a multiply comes into a >> zero-padding >> operation. >> You did describe how a multiply by zero can be replaced with simpler >> operations and, I guess, imply that those simpler operations start to >> look >> like zero padding. But, that's backing into it. Zero padding does not >> use >> multiplies in time and repeatedly saying that it does doesn't make it any >> less incorrect. Confusing zero padding with windowing (i.e. multiplying) >> isn't the end of the world but there *is* a distinction. >> >> Fred > > If we start from continuous process of infinite extent, we 1) sample, > 2) window (rectangular) to transform size, 3) rewindow (rectangular or > other) on data to be kept and multiply by zero for the rest to get to > a smaller window size than transform size. Just because you do the > operations in a different order and extent for efficiency doesn't mean > the functions aren't equivalent. It's good engineering to take the > shortcuts. That's no excuse to forget the connections between our > theoretical basis and our implementations. > > Dale B. Dalrymple
I don't know when I've seen a more contrived sequence of steps. Why in the world would one window and then, just for fun?, window again? That would border on insanity. It certainly is NOT a shortcut. And, what's been forgotten and by whom? I'm truly lost. Fred
Reply by dbd March 10, 20082008-03-10
On Mar 10, 12:40 pm, "Fred Marshall" <fmarshallx@remove_the_x.acm.org>
wrote:
> "dbd" <d...@ieee.org> wrote in message
> > > Windowing and zero-padding are functions that can be usefully defined > > as processes that use multiplies. They can be efficiently performed by > > operations not performing trivial multiplies. > > > Dale B. Dalrymple > > All fine except you didn't describe how a multiply comes into a zero-padding > operation. > You did describe how a multiply by zero can be replaced with simpler > operations and, I guess, imply that those simpler operations start to look > like zero padding. But, that's backing into it. Zero padding does not use > multiplies in time and repeatedly saying that it does doesn't make it any > less incorrect. Confusing zero padding with windowing (i.e. multiplying) > isn't the end of the world but there *is* a distinction. > > Fred
If we start from continuous process of infinite extent, we 1) sample, 2) window (rectangular) to transform size, 3) rewindow (rectangular or other) on data to be kept and multiply by zero for the rest to get to a smaller window size than transform size. Just because you do the operations in a different order and extent for efficiency doesn't mean the functions aren't equivalent. It's good engineering to take the shortcuts. That's no excuse to forget the connections between our theoretical basis and our implementations. Dale B. Dalrymple
Reply by Fred Marshall March 10, 20082008-03-10
"dbd" <dbd@ieee.org> wrote in message 
news:e6ab77f2-6342-4d4b-afad-02c237dbee37@s8g2000prg.googlegroups.com...
> On Mar 10, 11:32 am, "Fred Marshall" <fmarshallx@remove_the_x.acm.org> > wrote: > >> ... >> I was looking at it from a functional / procedural / operational point of >> view. >> To me, "zero padding" implies "adding" zeros to an existing function. >> >> I have a little trouble saying this: >> "I'm going to take this function and *zero pad* it by multiplying it by a >> shorter gate function." I don't think that's what "zero padding" means >> or >> is intended to mean. >> >> So, I don't see how the *operation* "zero padding" can have a multiply >> involved. >> And, thus my comment. >> >> Fred > > Perhaps the problem stems from thinking that the functional and > operational viewpoints are the same. They aren't. When a long sequence > has a shorter window applied, the windowed elements are multiplied by > a weight. If the result is placed in an array of greater length than > the window size, the function performed is the same as that of > weighting a longer sequence with some of the weights zero. The > operations performed are different. The multiplies by zero can be > performed more efficiently by simply loading a zero into the location > and saving the expense of a multiply. We can also be more efficient by > not generating the samples we would multiply by zero. If the window > was rectangular, the function can be performed more efficiently by the > operation of loading the elements into the array without a > multiplication than by using a multiplication by one, but the function > is the same as windowing. The operations are different only because of > a special properties of the values of the window coefficients. > > Windowing and zero-padding are functions that can be usefully defined > as processes that use multiplies. They can be efficiently performed by > operations not performing trivial multiplies. > > Dale B. Dalrymple >
All fine except you didn't describe how a multiply comes into a zero-padding operation. You did describe how a multiply by zero can be replaced with simpler operations and, I guess, imply that those simpler operations start to look like zero padding. But, that's backing into it. Zero padding does not use multiplies in time and repeatedly saying that it does doesn't make it any less incorrect. Confusing zero padding with windowing (i.e. multiplying) isn't the end of the world but there *is* a distinction. Fred
Reply by dbd March 10, 20082008-03-10
On Mar 10, 11:32 am, "Fred Marshall" <fmarshallx@remove_the_x.acm.org>
wrote:

> ... > I was looking at it from a functional / procedural / operational point of > view. > To me, "zero padding" implies "adding" zeros to an existing function. > > I have a little trouble saying this: > "I'm going to take this function and *zero pad* it by multiplying it by a > shorter gate function." I don't think that's what "zero padding" means or > is intended to mean. > > So, I don't see how the *operation* "zero padding" can have a multiply > involved. > And, thus my comment. > > Fred
Perhaps the problem stems from thinking that the functional and operational viewpoints are the same. They aren't. When a long sequence has a shorter window applied, the windowed elements are multiplied by a weight. If the result is placed in an array of greater length than the window size, the function performed is the same as that of weighting a longer sequence with some of the weights zero. The operations performed are different. The multiplies by zero can be performed more efficiently by simply loading a zero into the location and saving the expense of a multiply. We can also be more efficient by not generating the samples we would multiply by zero. If the window was rectangular, the function can be performed more efficiently by the operation of loading the elements into the array without a multiplication than by using a multiplication by one, but the function is the same as windowing. The operations are different only because of a special properties of the values of the window coefficients. Windowing and zero-padding are functions that can be usefully defined as processes that use multiplies. They can be efficiently performed by operations not performing trivial multiplies. Dale B. Dalrymple
Reply by Fred Marshall March 10, 20082008-03-10
"Ron N." <rhnlogic@yahoo.com> wrote in message 
news:1689cc09-fe71-4950-9dfe-e627ecdedc90@s12g2000prg.googlegroups.com...
> On Mar 9, 9:41 pm, "Fred Marshall" <fmarshallx@remove_the_x.acm.org> > wrote: >> "Ron N." <rhnlo...@yahoo.com> wrote in message >> >> news:bc1bbe96-e40a-4d0c-8d24-8c9994bbddca@e25g2000prg.googlegroups.com... >> >> >> >> > Zero padding is equivalent to applying a rectangular window. >> >> I don't see how..... assuming that the rectangular window has already >> been >> applied then what does zero padding do? > > Zero padding n data samples before a transform is equivalent > to applying a rectangular window of length n inside a > transform of length greater than n. The zero padding > causes zero-valued points to be represented in the > longer transform results, same as a rectangular window.
We agree on the math but not on the words. When is 2+2 not 1+1+1+1 ?? How many clocks does each take? etc. etc. Zero padding n data samples before a transform adds zeros - presumably where there is no other information. There is *no* multiplication involved here from an operational point of view. And, there is no multiplication from a signal processing / linear systems point of view. Applying a rectangular window of length n inside a transform of length greater than n throws away information. And, here is where there's a multiplication. I have a hard time saying that these are functionally the "same" - even though I know that the resulting transforms will be identical. It's a "system" kind of thing. I'd like to hear the lecture that goes through the zero padding steps and argues that there's an implied multiplication in time. I can imagine: "it's as if" but that's all. I hope this makes the intent clearer. Fred