Main Content

fft2

2-D fast Fourier transform

Description

Y = fft2(X) returns the two-dimensional Fourier transform of a matrix X using a fast Fourier transform algorithm, which is equivalent to computing fft(fft(X).').'.

When X is a multidimensional array, fft2 computes the 2-D Fourier transform on the first two dimensions of each subarray of X that can be treated as a 2-D matrix for dimensions higher than 2. For example, if X is an m-by-n-by-1-by-2 array, then Y(:,:,1,1) = fft2(X(:,:,1,1)) and Y(:,:,1,2) = fft2(X(:,:,1,2)). The output Y is the same size as X.

example

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

example

Examples

collapse all

The 2-D Fourier transform is useful for processing 2-D signals and other 2-D data such as images.

Create and plot 2-D data with repeated blocks.

P = peaks(20);
X = repmat(P,[5 10]);
imagesc(X)

Figure contains an axes object. The axes object contains an object of type image.

Compute the 2-D Fourier transform of the data. Shift the zero-frequency component to the center of the output, and plot the resulting 100-by-200 matrix, which is the same size as X.

Y = fft2(X);
imagesc(abs(fftshift(Y)))

Figure contains an axes object. The axes object contains an object of type image.

Pad X with zeros to compute a 128-by-256 transform.

Y = fft2(X,2^nextpow2(100),2^nextpow2(200));
imagesc(abs(fftshift(Y)));

Figure contains an axes object. The axes object contains an object of type image.

Input Arguments

collapse all

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

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

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

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

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

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

More About

collapse all

2-D Fourier Transform

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

Yp+1,q+1=j=0m1k=0n1ωmjpωnkqXj+1,k+1

ωm and ωn are complex roots of unity:

ωm=e2πi/mωn=e2πi/n

i is the imaginary unit. p and j are indices that run from 0 to m–1, and q and k are indices that run from 0 to n–1. This formula shifts the indices for X and Y by 1 to reflect matrix indices in MATLAB®.

Extended Capabilities

GPU Code Generation
Generate CUDA® code for NVIDIA® GPUs using GPU Coder™.

Version History

Introduced before R2006a

See Also

| | |