Overload List
| # | Signature | Description |
|---|---|---|
| 1 | TMtxVec *FFTFromReal(TMtxVec *Vec, int VecIndex, int Index, int Len); | The forward Fast Fourier Transformation (FFT) from real to complex. |
| 2 | TVec *FFTFromReal(); | The forward Fast Fourier Transformation (FFT) from real to complex. |
| 3 | TVec *FFTFromReal(TVec *Vec); | Calculate the FFT from all Vec elements (not-in-place). |
Overload 1: TMtxVec *FFTFromReal(TMtxVec *Vec, int VecIndex, int Index, int Len);
The forward Fast Fourier Transformation (FFT) from real to complex.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | Vec | TMtxVec * | |
| 2 | VecIndex | int | |
| 3 | Index | int | |
| 4 | Len | int |
Calculate the FFT from real Vec elements [VecIndex]..[VecIndex+Len-1] and store the results in the calling object elements [Index]..[Index+Len-1]. The Len parameter must not be a power of two. Size and TVec::Complex properties of the calling object must be set explicitly. An exception is raised if TVec::ConditionCheck is True and Vec is not complex or if array borders are overrun.
This is the indexed version of the FFT routine TVec::FFTFromReal. Look there for more information on FFT parameters and storage requirements.
Overload 2: TVec *FFTFromReal();
The forward Fast Fourier Transformation (FFT) from real to complex.
Calculates the forward Fast Fourier Transformation (FFT) from real to complex for the calling vector in-place. The transform should be used, when the conjugate symmetric part of the frequency spectrum is not desired. If the calling vector is complex an exception will be raised. The operation implicitly sets the calling vector Complex property to True. The highest performance will be achieved if the transform length will be a power of two. The transform length is equal to TVec::Length, when the TVec::FFTStorageFormat is fsfPack or fsfPerm. The default storage format is fsfCCS.
In-place fsfCCS complication
The transform length in case of fsfCCS will be equal to Length-2, because the result is bigger than the source data by 2 real samples, if the source data is even. If the source data length is odd, then TVec::FFTOddLength must be set to True and only Length-1 samples will be used, but Length must of course in that case be even, or Length-1 will not be odd. The last two (one) samples in the vector will be ignored and will be overwritten with the result.
Overload 3: TVec *FFTFromReal(TVec *Vec);
Calculate the FFT from all Vec elements (not-in-place).
| # | Name | Type | Description |
|---|---|---|---|
| 1 | Vec | TVec * |
The source is Vec and the result is stored in the (separate) calling vector. TVec::Length and TVec::Complex of the calling vector are set implicitly to match the size and type of the result.
Unlike the in-place TVec::FFTFromReal overload, this not-in-place overload needs neither extra storage nor TVec::FFTOddLength management: all Vec.Length samples are transformed (nothing is ignored), and the result vector is sized automatically, so the caller does NOT pre-pad it by the +2 (even source length) or +1 (odd source length) real samples that the in-place variant requires. TVec::FFTOddLength is derived automatically from Odd(Vec.Length) and stored on the result, so a matching not-in-place TVec::IFFTToReal round-trips both odd and even lengths without the caller ever touching FFTOddLength.