From: raj malhotra on 10 Aug 2010 08:27 Hi guys, I have a very basic problem. I am able to calculate FFT of an input vector. But now what i want is, to subdivide the input vector into blocks, each having equal number of elements. An FFT needs to be performed on each individual block. The results of these FFTs are then averaged to give the final result. How to accomplish this ? Please pour in.
From: Jerry Avins on 10 Aug 2010 08:57 On 8/10/2010 8:27 AM, raj malhotra wrote: > Hi guys, > I have a very basic problem. I am able to calculate FFT of an input vector. > > > But now what i want is, to subdivide the input vector into blocks, each > having equal number of elements. An FFT needs to be performed on each > individual block. The results of these FFTs are then averaged to give the > final result. > > How to accomplish this ? Please pour in. It's really simple. 1) Divide the input data into blocks of equal size. (Did the word "vector" confuse you?) Discard any leftover samples. Window each block separately. 2) Perform FFTs on each of the blocks. 3) Since all relative phase information is lost by creating the blocks, compute the magnitudes of the bins. 4) Add like bins from each of the FFTs. Optionally, divide by the number of blocks. In other words, do what you wrote. Jerry -- Engineering is the art of making what you want from things you can get. �����������������������������������������������������������������������
From: robert bristow-johnson on 10 Aug 2010 10:27 On Aug 10, 8:57 am, Jerry Avins <j...(a)ieee.org> wrote: > On 8/10/2010 8:27 AM, raj malhotra wrote: > > > Hi guys, > > I have a very basic problem. I am able to calculate FFT of an input vector. > > > But now what i want is, to subdivide the input vector into blocks, each > > having equal number of elements. An FFT needs to be performed on each > > individual block. The results of these FFTs are then averaged to give the > > final result. > > > How to accomplish this ? Please pour in. > > It's really simple. > > 1) Divide the input data into blocks of equal size. (Did the word > "vector" confuse you?) Discard any leftover samples. Window each block > separately. > > 2) Perform FFTs on each of the blocks. > > 3) Since all relative phase information is lost by creating the blocks, > compute the magnitudes of the bins. > > 4) Add like bins from each of the FFTs. Optionally, divide by the number > of blocks. > > In other words, do what you wrote. > he *might* want to average the squares of the magnitudes (before square rooting). but, unless he has specific information about the signal period, he does need to toss the phase information. r b-j
From: Ron N. on 10 Aug 2010 14:58 On Aug 10, 5:57 am, Jerry Avins <j...(a)ieee.org> wrote: > 3) Since all relative phase information is lost by creating the blocks, > compute the magnitudes of the bins. If you know the block offsets, then relative phase information isn't lost. This allows options such as coherent averaging for narrower bin-centered filtering, or interpolation of more bins or frequencies between blocks using phase vocoder methods. IMHO. YMMV. -- rhn A.T nicholson d.0.t C-o-M http://www.nicholson.com/rhn/dsp.html
From: Jerry Avins on 10 Aug 2010 15:54
On 8/10/2010 2:58 PM, Ron N. wrote: > On Aug 10, 5:57 am, Jerry Avins<j...(a)ieee.org> wrote: >> 3) Since all relative phase information is lost by creating the blocks, >> compute the magnitudes of the bins. > > If you know the block offsets, then relative phase information > isn't lost. This allows options such as coherent averaging > for narrower bin-centered filtering, or interpolation of more > bins or frequencies between blocks using phase vocoder > methods. Do you suppose that anyone who asked the original question could manage to do that? Jerry -- Engineering is the art of making what you want from things you can get. ����������������������������������������������������������������������� |