Documentation

ifft2

2-D inverse fast Fourier transform

Description

example

X = ifft2(Y) returns the two-dimensional discrete inverse Fourier transform of a matrix using a fast Fourier transform algorithm. If Y is a multidimensional array, then ifft2 takes the 2-D inverse transform of each dimension higher than 2. The output X is the same size as Y.

example

X = ifft2(Y,m,n) truncates Y or pads Y with trailing zeros to form an m-by-n matrix before computing the inverse transform. X is also m-by-n. If Y is a multidimensional array, then ifft2 shapes the first two dimensions of Y according to m and n.

example

X = ifft2(___,symflag) specifies the symmetry of Y. For example, ifft2(Y,'symmetric') treats Y as conjugate symmetric.

Examples

collapse all

You can use the ifft2 function to convert 2-D signals sampled in frequency to signals sampled in time or space. The ifft2 function also allows you to control the size of the transform.

Create a 3-by-3 matrix and compute its Fourier transform.

X = magic(3)
X = 3×3

8     1     6
3     5     7
4     9     2

Y = fft2(X)
Y = 3×3 complex

45.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i
0.0000 + 0.0000i  13.5000 + 7.7942i   0.0000 - 5.1962i
0.0000 - 0.0000i   0.0000 + 5.1962i  13.5000 - 7.7942i

Take the inverse transform of Y, which is the same as the original matrix X, up to round-off error.

ifft2(Y)
ans = 3×3

8.0000    1.0000    6.0000
3.0000    5.0000    7.0000
4.0000    9.0000    2.0000

Pad both dimensions of Y with trailing zeros so that the transform has size 8-by-8.

Z = ifft2(Y,8,8);
size(Z)
ans = 1×2

8     8

For nearly conjugate symmetric matrices, you can compute the inverse Fourier transform faster by specifying the 'symmetric' option, which also ensures that the output is real.

Compute the 2-D inverse Fourier transform of a nearly conjugate symmetric matrix.

Y = [3+1e-15*i 5;
5 3];
X = ifft2(Y,'symmetric')
X = 2×2

4     0
0    -1

Input Arguments

collapse all

Input array, specified as a matrix or a multidimensional array. If Y is of type single, then ifft2 natively computes in single precision, and X is also of type single. Otherwise, X is returned as type double.

Data Types: double | single | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical
Complex Number Support: Yes

Number of inverse transform rows, specified as a positive integer scalar.

Data Types: double | single | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

Number of inverse transform columns, specified as a positive integer scalar.

Data Types: double | single | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

Symmetry type, specified as 'nonsymmetric' or 'symmetric'. When Y is not exactly conjugate symmetric due to round-off error, ifft2(Y,'symmetric') treats Y as if it were conjugate symmetric. For more information on conjugate symmetry, see Algorithms.

collapse all

2-D Inverse Fourier Transform

This formula defines the discrete inverse Fourier transform X of an m-by-n matrix Y:

${X}_{p,q}=\frac{1}{m}\sum _{j=1}^{m}\frac{1}{n}\sum _{k=1}^{n}{\omega }_{m}^{\left(j-1\right)\left(p-1\right)}{\omega }_{n}^{\left(k-1\right)\left(q-1\right)}{Y}_{j,k}$

ωm and ωn are complex roots of unity:

$\begin{array}{l}{\omega }_{m}={e}^{2\pi i/m}\\ {\omega }_{n}={e}^{2\pi i/n}\end{array}$

i is the imaginary unit. p runs from 1 to m and q runs from 1 to n.

Algorithms

• The ifft2 function tests whether the vectors in a matrix Y are conjugate symmetric in both dimensions. A vector v is conjugate symmetric when the ith element satisfies v(i) = conj(v([1,end:-1:2])). If the vectors in Y are conjugate symmetric in both dimensions, then the inverse transform computation is faster and the output is real.