vDSP_DFT_Execute
Calculates the discrete single-precision Fourier transform for a vector.
Declaration
void vDSP_DFT_Execute(const struct vDSP_DFT_SetupStruct *__Setup, const float *__Ir, const float *__Ii, float *__Or, float *__Oi);Parameters
- __Setup:
The DFT setup structure for this transform.
- __Ir:
A single-precision vector that contains the real parts of the input values.
- __Ii:
A single-precision vector that contains the imaginary parts of the input values.
- __Or:
A single-precision vector that contains the real parts of the output values.
- __Oi:
A single-precision vector that contains the imaginary parts of the output values.
Mentioned in
Discussion
This function uses the following operation for a real transform. That is, when the vDSP_DFT_zrop_CreateSetup function provides the setup structure:
// _N_ is the length given in the setup
// _h_ is the array of numbers specified by _Ir_ and _Ii_
// _H_ is the array of numbers specified by _Or_ and _Oi_
// _C_ is:
// 2 if Direction is `vDSP_DFT_FORWARD` and
// 1 if Direction is `vDSP_DFT_INVERSE`
// _S_ is:
// -1 if Direction is `vDSP_DFT_FORWARD` and
// +1 if Direction is `vDSP_DFT_INVERSE`
// _1**x_ is _e**(2*pi*i*x)_
For 0 <= k < N
H[k] = C * sum(1**(S * j*k/N) * h[j], 0 <= j < N)The function uses the following operation for a complex transform. That is, when the vDSP_DFT_zop_CreateSetup function provides the setup structure:
// _N_ is the length given in the setup
// _h_ is the array of complex numbers specified by _Ir_ and _Ii_
// _H_ is the array of complex numbers specified by _Or_ and _Oi_
// _S_ is:
// -1 if Direction is `vDSP_DFT_FORWARD` and
// +1 if Direction is `vDSP_DFT_INVERSE`
// _1**x_ is _e**(2*pi*i*x)_
For 0 <= k < N,
H[k] = sum(1**(S * j*k/N) * h[j], 0 <= j < N),This function supports in-place operation where the Or and Ir parameters are equal, and the Oi and Ii parameters are equal. The transform length must equal the transform length specified in the given setup structure.