[LAD] FFT 1D real

Fons Adriaensen fons at linuxaudio.org
Mon Mar 14 16:02:01 UTC 2011


On Mon, Mar 14, 2011 at 02:11:00PM +0200, Alfs Kurmis wrote:

>  What typical comes in to FFT function ? Pointer to already windowed
>  array of samples ?

Yes.

>  What return FFT ?

Either it overwrites the input, or it needs a second pointer
to the output array.

Function return value: up to you, normally you don't need one.

>  What exact physical dimensions return FFT , if input function
>  dimensions was - voltage depends from (time) U=U(t) ?

The dimension of the data is the same in both domains.
If one is a function of T, then the other is a function
of 1/T  (for example: T = time, 1/T = frequency).

>  How from ...1024 or 2048 or 4096... FFT return values  i calculate
>  power magnitudes for all bands,
>  and finally values for visual 10-20 hopping bars, like in Winamp ,
>  XMMS , QMMP ... ?

If you want such a display the FFT is not a good way to do it.
It's possible but not simple if you want a correct result.

>  If i exact know my FFT window size [for example 4096 samples] and
>  window type , and it will be constant forever,
>  is it possible to calculate window(,sine,cosine,) and store all
>  values in constant array,
>  so that in runtime it do not need be calculated , but i can just 
>  take values form array ?

Yes.

>  43303.2715 + 796.7285 = 44100 or 44100 - 43303.2715 = 796.7285> 
>  Why Frequency 796.7285 is mirrored as Frequency 43303.2715 , and
>  magnitude for both Frequencies is divided by 2 ????

Because you are using a complex FFT, and the imaginary part
of your signal is zero. That means that the spectrum must be
symmetric.

>  Is here way direct calculate full magnitude and without Frequency
>  mirroring , in band 0 Hz ... FSampl/2 ONLY ,

Use an FFT operating on real data instead of complex.

Ciao,

-- 
FA




More information about the Linux-audio-dev mailing list