Overload List
| # | Signature | Description |
|---|---|---|
| 1 | TVec FFT(TVec Vec, Boolean ConjugateExtend) | Calculate the FFT from all Vec elements. |
| 2 | TVec FFT(Boolean ConjugateExtend) | Fast Furier Transformation (FFT) from complex to complex or from real to complex. |
| 3 | TMtxVec FFT(TMtxVec Vec, Boolean ConjugateExtend, Int32 VecIndex, Int32 Index, Int32 Len) | Fast Furier Transformation (FFT) from complex to complex or from real to complex. |
Overload 1: TVec FFT(TVec Vec, Boolean ConjugateExtend)
Calculate the FFT from all Vec elements.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | Vec | TVec | source TVec |
| 2 | ConjugateExtend | Boolean |
Result: stored in self (calling object), returns self for chaining
Store the results in the calling vector. Vec Dew.Math.Vector.Length must not be a power of two, but highest performance will be achieved if it is a power of two. Length and Dew.Math.Vector.Complex properties of the calling vector are set implicitly to match Vec vector. If Vec is complex then complex to complex forward FFT is performed. If Vec is real then real to complex FFT is performed and the conjugate symmetric part is appended.
Overload 2: TVec FFT(Boolean ConjugateExtend)
Fast Furier Transformation (FFT) from complex to complex or from real to complex.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | ConjugateExtend | Boolean |
Result: stored in self (calling object), returns self for chaining
Fast Furier Transformation (FFT) from complex to complex or from real to complex. Calculate the FFT from all calling vector elements in-place. If the calling vector is complex then complex to complex forward FFT is performed. If the calling vector is real then real to complex FFT is performed.
The Dew.Math.Vector.Length of the transforming vector can be any number but highest performance will be achieved if it is a power of two.
Note
When performing FFT from real to complex the conjugated symmetric part is also generated by conjugating and mirroring the first half of the spectrum. If Complex is false, the operation will not be performed in-place, if the Length of the destination will allocate more than amount of the memory preallocated for the TVec object. Instead, the data will be copied first to allocate enough space to store the result.
There are two important parameters to consider that affect how will the FFT be computed: Dew.Math.Vector.FFTStorageFormat and Dew.Math.Vector.FFTScrambled. The default storage format is fsfCCS.
Vector a;
Vector b;
a.SetIt(false,new double[] {1,2,3,4});
b.FFT(a);
a.FFT; // a = [(10, 0),( -2,2), (-2, 0), (-2,-2)]
if !a.Equal(b) then ERaise(@"Not equal");
Overload 3: TMtxVec FFT(TMtxVec Vec, Boolean ConjugateExtend, Int32 VecIndex, Int32 Index, Int32 Len)
Fast Furier Transformation (FFT) from complex to complex or from real to complex.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | Vec | TMtxVec | source TVec or TMtx |
| 2 | ConjugateExtend | Boolean | |
| 3 | VecIndex | Int32 | |
| 4 | Index | Int32 | start index |
| 5 | Len | Int32 | element count |
Result: stored in self (calling object), returns self for chaining
Calculate the FFT from Vec elements [VecIndex]..[VecIndex+Len-1] and store the results in the calling object elements [Index]..[Index+Len-1]. The Len parameter must be a power of two. Size and Dew.Math.Vector.Complex properties of the calling object must be set explicitly. An exception is raised if Dew.Math.Vector.ConditionCheck is True and array borders are overrun. If Vec is complex, then complex to complex forward FFT is performed. If Vec is real, then real to complex forward FFT is performed.
Note
This is the indexed version of the FFT routine . Look there for more information on FFT parameters and storage requirements.