From: raj malhotra on
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
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
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
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
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.
�����������������������������������������������������������������������