C++
C#
VB
JScript
All

# real_ifft

Copyright (C) 2005 IENT-RWTH Aachen

template<class G1,class G2> inline void real_ifft(Vector<G1> &X, Vector<G2> &Y)
template<class G> inline typename DenseVector<typename Vector<G>::value_type::value_type >::self real_ifft(Vector<G> &X)
template<class G1,class G2> inline void real_ifft(const Matrix<G1> &X, Matrix<G2> &Y)
template<class G> inline typename DenseMatrix<typename Matrix<G>::value_type::value_type >::self real_ifft(const Matrix<G> &X)

IFFT of a complex-symmetric signal

Parameters

Y | The real IFFT
X | A complex or half-complex signal

Remarks

The complex input signal is supposed to correspond to the FFT of a real signal, and therefore to respect the following symmetry property:

    Y[N-i] = conj(Y[i])

Only the first values of the input signal (indexes 0 to N/2) are therefore considered. For any signal of real values, the following statments equal X to within roundoff error:

    real_ifft(fft(X))
    real_ifft(half_real_fft(X))

The present algorithm has 2 limitations:

- It only works with input signal of even length. For odd lengths, use the slowler ifft function with a complex-symmetric input.

      Y=real(ifft(X));

- In order to achieve better performances, it overwrites the vectotial input with arbitrary data. (Matrix inputs are not overwritten). Copy the input signal in a temporary array if you need to preserve it.

      T=X;
      Y=real_ifft(T);

See Also

ifft, fft, half_real_fft