Overload List
| # | Signature | Description |
|---|---|---|
| 1 | TVec IFFTToReal(TVec Vec, Boolean NoScale) | Calculate the inverse FFT from all Vec elements (not-in-place). |
| 2 | TVec IFFTToReal(Boolean NoScale) | The inverse FFT from complex to real. |
| 3 | TMtxVec IFFTToReal(TMtxVec Vec, Int32 VecIndex, Int32 Index, Int32 Len, Boolean NoScale) | The inverse FFT from complex to real. |
Overload 1: TVec IFFTToReal(TVec Vec, Boolean NoScale)
Calculate the inverse FFT from all Vec elements (not-in-place).
| # | Name | Type | Description |
|---|---|---|---|
| 1 | Vec | TVec | source TVec |
| 2 | NoScale | Boolean |
Result: stored in self (calling object), returns self for chaining
The source spectrum is Vec and the real result is stored in the (separate) calling vector. Vec Dew.Math.TMtxVecBase.Length need not be a power of two. Dew.Math.TMtxVecBase.Length and Dew.Math.TMtxVec.Complex properties of the calling vector are set implicitly to the size and type of the result.
Unlike the in-place Dew.Math.TVec.IFFTToReal overload, this not-in-place overload needs neither extra storage nor Dew.Math.TDenseMtxVec.FFTOddLength management: the result length (odd or even) is taken from the source spectrum's own Dew.Math.TDenseMtxVec.FFTOddLength, which the matching not-in-place Dew.Math.TVec.FFTFromReal already set, so odd- and even-length signals round-trip without the caller ever touching FFTOddLength.
Overload 2: TVec IFFTToReal(Boolean NoScale)
The inverse FFT from complex to real.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | NoScale | Boolean |
Result: stored in self (calling object), returns self for chaining
Calculates the inverse Fast Fourier Transformation (FFT) from complex to real from all calling vector elements. The result is a real type vector. Input vector must be a complex vector or an exception is raised. If the NoScale parameter is true then no scaling is performed for the calling vector. The results can be erroneous if overflow or underflow occurs.
In-place fsfCCS complication
When Dew.Math.TDenseMtxVec.FFTStorageFormat is equal to fsfCCS the Length of the result will be equal to Length-2, because the source data is bigger than the result data by 2 real samples, if Dew.Math.TDenseMtxVec.FFTOddLength is false. If Dew.Math.TDenseMtxVec.FFTOddLength is True the result will fill up Length-1 samples.
TVec a;
TVec b;
MtxVec.CreateIt(out a, out b);
try //Even
a.SetIt(true,new double[] {1,2,3,4});
b.FFTFromReal(a); // b = [(10, 0),( -2,2), (-2, 0)]
b.IFFTToReal; // b = [1, 2, 3, 4, -2, 0)]
//Odd length
a.SetIt(true,new double[] {1,2,3,0});
b.FFTOddLength = true; //use only Length-1 samples
b.FFTFromReal(a); // b = [(6,0),( -1.5,0.8660)] //result requires 2 complex (= 4 real numbers)
b.IFFTToReal; //b = new double[] {1, 2, 3, 0.8660}
//Event length
a.SetIt(true,new double[] {1,2,3,4, 0,0}); //allocate two more elements
a.FFTOddLength = false; //use only Length-2 samples
a.FFTFromReal; // a = [(10, 0),( -2,2), (-2, 0)] //result requires 3 complex (= 6 real numbers)
a.IFFToReal; // a = [1, 2, 3, 4, -2, 0)]
}
finally
{
MtxVec.FreeIt(ref a, ref b);
Overload 3: TMtxVec IFFTToReal(TMtxVec Vec, Int32 VecIndex, Int32 Index, Int32 Len, Boolean NoScale)
The inverse FFT from complex to real.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | Vec | TMtxVec | source TVec or TMtx |
| 2 | VecIndex | Int32 | |
| 3 | Index | Int32 | start index |
| 4 | Len | Int32 | element count |
| 5 | NoScale | Boolean |
Result: stored in self (calling object), returns self for chaining
Calculate the inverse 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 not be a power of two. Size and Dew.Math.TMtxVec.Complex properties of the calling object must be set explicitly. An exception is raised if Dew.Math.TMtxVecBase.ConditionCheck is True and array borders are overrun.
This is the indexed version of the FFT routine Dew.Math.TVec.IFFTToReal. Look there for more information on FFT parameters and storage requirements.