Engee documentation

IFFT

Reverse fast Fourier transform (OBFT) of the input signal.

blockType: SubSystem

Path in the library:

/Signal Operations/Transforms/IFFT

Description

Block IFFT calculates the inverse fast Fourier transform (OBFT) from the first dimension of a multidimensional input array, .

The block uses one of two possible FFT implementations. You can choose an implementation based on the FFTW library, or an implementation based on the Radix-2 algorithm.

When the input signal length is, , longer than the length of the OBF, you can observe an increase in the amplitude of the output signal. This is due to the fact that the block IFFT uses data reset modulo length to save all available input samples.

To avoid such an increase in amplitude, you can truncate the length of the input sample. up to the length of the OBF . To do this, place a block in the model Pad before the block IFFT.

Ports

Input

# Port_1 — input signal
vector | matrix| multidimensional array

Details

Input signal for OPF calculation as a vector, matrix or multidimensional array.

The unit calculates the OPF by the first measurement of the multidimensional input signal.

Data types

Float16 | Float32 | Float64 | Int8 | Int16 | Int32 | Int64 | UInt8 | UInt16 | UInt32 | UInt64

Complex numbers support

Yes

Output

# Port_1 — OPF of the input signal
vector | matrix| multidimensional array

Details

An output signal returned as a vector, matrix or multidimensional array.

OPF calculated from the first dimension of the multidimensional input array.

The -th entry of the -th output channel, , is equal to the -point -point inverse discrete Fourier transform (ODPF) of the -th input channel:

π
Data types

Float16 | Float32 | Float64 | Int8 | Int16 | Int32 | Int64 | UInt8 | UInt16 | UInt32 | UInt64

Complex numbers support

Yes

Parameters

Parameters

# FFT implementation — FFT realisation
Radix-2 | FFTW

Details

FFT Implementation:

  • FFTW - support input signal of arbitrary length.

  • Radix-2 - implementation of bitwise processing of floating point data. The dimensionality of the input matrix with the size to must be equal to the power of two. To work with other input data dimensions, use the block Pad, to flatten or truncate these dimensions to powers of two, or if possible, choose the FFTW implementation.

Values

Radix-2 | FFTW

Default value

Radix-2

Program usage name

FFTImplementation

Tunable

No

Evaluatable

Yes

# Input is in bit-reversed order — bit-reverse input

Details

Specifies the order of the input channel elements relative to the order of the output channel elements. When this check box is selected, the input channel items are displayed in bit-reverse order relative to the output sequence order. When unchecked, the input channel items are displayed in linear order relative to the output sequence order.

The IFFT block computes its input in bit-reverse order. The linear ordering of the IFFT block’s input data requires an additional bit-reverse operation. In many situations it is possible to increase the speed of the IFFT block by checking the Input in bit-reversed order checkbox.

Dependencies

To use this parameter, set the FFT implementation parameters to Radix-2.

Default value

false (switched off)

Program usage name

BitRevOrder

Tunable

No

Evaluatable

Yes

# Divide output by FFT length — divide the output by the FFT length

Details

When this parameter is selected, the unit divides the OPF output by the FFT length. This option is useful when you want the OPF output to remain in the same amplitude range as the input.

Default value

true (switched on)

Program usage name

Normalize

Tunable

No

Evaluatable

Yes

# Inherit FFT length from input dimensions — inherit the FFT length from the input dimensions

Details

Select this check box to inherit FFT length from input dimensions.

Dependencies

If this checkbox is not selected, the FFT length parameters become available for specifying the length.

Default value

true (switched on)

Program usage name

InheritFFTLength

Tunable

No

Evaluatable

Yes

# FFT length — FFT length

Details

Specify the FFT length as an integer, .

If the FFT implementation parameters are set to Radix-2 or the Intput in bit-reversed order checkbox is selected, this value must be two.

Dependencies

To use this parameter, uncheck Inherit FFT length from input dimensions.

Default value

64

Program usage name

FFTLength

Tunable

No

Evaluatable

Yes

# Wrap input data when FFT length is shorter than input length — convolution or truncation input data

Details

Selects whether to convolve or truncate the input data depending on the FFT length. If this parameter is selected, modulo convolution is performed before the FFT operation when the FFT length is less than the input length. If unchecked, the input data is truncated to the FFT length before the FFT operation.

Dependencies

To use this parameter, clear the Inherit FFT length from input dimensions checkbox.

Default value

true (switched on)

Program usage name

WrapInput

Tunable

No

Evaluatable

Yes

Algorithms

FFTW Implementation

The FFTW implementation provides optimized FFT calculation, including support for transform lengths equal to and not equal to powers of two, as in simulation. The input data type must be floating point.

Radix-2 implementation

The Radix-2 implementation supports bit-reverse processing and allows the block to generate C code. Dimension input matrix size on it must be equal to a power of two. To work with other input data sizes, use the block Pad to complement or truncate these dimensions to the power of two.

When selecting Radix-2, the block implements one or more of the following algorithms:

  • Operation Butterfly

  • The dual signal algorithm

  • The half-length algorithm

  • Time Dilution Algorithm (DIT) Radix-2

  • Frequency Decimation Algorithm (DIF) Radix-2

Radix-2 algorithms for real and complex signals

Complexity of input data The order of the output data Algorithms used to calculate the FFT

Comprehensive

Linear

Bit-reversal operation and Radix-2 DIT algorithm

Comprehensive

Bit-reverse

Radix-2 DIF

Material

Linear

Bit-reversal and Radix-2 DIT operation combined with half-length and double-signal algorithms

Material

Bit-reverse

Radix-2 DIF in combination with half-length and double-signal algorithms

The efficiency of the FFT algorithm can be improved for real input signals by forming complex sequences from real sequences before calculating the DFT. If available Using the real input channels, the FFT block generates these complex sequences by applying the dual signal algorithm to the first ones. the input channels, and the half—length algorithm is applied to the last odd channel.

Radix-2 optimization for a table of trigonometric values

In some situations, the Radix-2 block algorithm calculates all possible trigonometric values of the twiddle factor

π ,

where

  • — the larger value of the two values: or ,

  • .

The block stores these values in a table and retrieves them during simulation. The number of records in the floating point table is shown in the following table:

The number of entries in the table for the N-point FFT

with floating point

Literature

  1. Orfanidis, S. J. "Introduction to Signal Processing." Upper Saddle River, NJ: Prentice Hall, 1996, p. 497.

  2. Proakis, John G. and Dimitris G. Manolakis. "Digital Signal Processing, 3rd ed." Upper Saddle River, NJ: Prentice Hall, 1996.

  3. FFTW (https://www.fftw.org)

  4. Frigo, M. and S. G. Johnson, "FFTW: An Adaptive Software Architecture for the FFT,"Proceedings of the International Conference on Acoustics, Speech, and Signal Processing, Vol. 3, 1998, pp. 1381-1384.

See also

  1. FFT