# ifft2

2-D inverse fast Fourier transform

## Syntax

``X = ifft2(Y)``
``X = ifft2(Y,m,n)``
``X = ifft2(___,symflag)``

## 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` in addition to any of the input argument combinations in previous syntaxes. 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 by ignoring the second half of its elements (that are in the negative frequency spectrum). 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 matrix `Y` is conjugate symmetric. If `Y` is conjugate symmetric, then the inverse transform computation is faster and the output is real.

A function $g\left(a,b\right)$ is conjugate symmetric if $g\left(a,b\right)={g}^{*}\left(-a,-b\right)$. However, the fast Fourier transform of a 2-D time-domain signal has one half of its spectrum in positive frequencies and the other half in negative frequencies, with the first row and column reserved for the zero frequencies. For this reason, a matrix `Y` is conjugate symmetric when all of these conditions are true:

• `Y(1,2:end)` is conjugate symmetric, or `Y(1,2:end) = conj(Y(1,end:-1:2))`

• `Y(2:end,1)` is conjugate symmetric, or `Y(2:end,1) = conj(Y(end:-1:2,1))`

• `Y(2:end,2:end)` is conjugate centrosymmetric, or ```Y(2:end,2:end) = conj(Y(end:-1:2,end:-1:2))```

## Version History

Introduced before R2006a