fft2
2-D fast Fourier transform
Description
Y = fft2(
returns
the two-dimensional
Fourier transform of a matrix using a fast Fourier transform
algorithm, which is equivalent to computing X
)fft(fft(X).').'
.
If X
is a multidimensional array, then fft2
takes
the 2-D transform of each dimension higher than 2. The output Y
is
the same size as X
.
Examples
2-D Transform
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)
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)))
Pad X
with zeros to compute a 128-by-256 transform.
Y = fft2(X,2^nextpow2(100),2^nextpow2(200)); imagesc(abs(fftshift(Y)));
Input Arguments
X
— Input array
matrix | multidimensional array
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
m
— Number of transform rows
positive integer scalar
Number of transform rows, specified as a positive integer scalar.
Data Types: double
| single
| int8
| int16
| int32
| uint8
| uint16
| uint32
| logical
n
— Number of transform columns
positive integer scalar
Number of transform columns, specified as a positive integer scalar.
Data Types: double
| single
| int8
| int16
| int32
| uint8
| uint16
| uint32
| logical
More About
2-D Fourier Transform
This formula defines the discrete Fourier transform Y of an m-by-n matrix X:
ωm and ωn are complex roots of unity:
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
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Usage notes and limitations:
For MEX output, MATLAB Coder™ uses the library that MATLAB uses for FFT algorithms. For standalone C/C++ code, by default, the code generator produces code for FFT algorithms instead of producing FFT library calls. To generate calls to a specific installed FFTW library, provide an FFT library callback class. For more information about an FFT library callback class, see
coder.fftw.StandaloneFFTW3Interface
(MATLAB Coder).For simulation of a MATLAB Function block, the simulation software uses the library that MATLAB uses for FFT algorithms. For C/C++ code generation, by default, the code generator produces code for FFT algorithms instead of producing FFT library calls. To generate calls to a specific installed FFTW library, provide an FFT library callback class. For more information about an FFT library callback class, see
coder.fftw.StandaloneFFTW3Interface
(MATLAB Coder).Using the Code Replacement Library (CRL), you can generate optimized code that runs on ARM® Cortex®-A processors with Neon extension. To generate this optimized code, you must install the Embedded Coder® Support Package for ARM Cortex-A Processors (Embedded Coder Support Package for ARM Cortex-A Processors). The generated code for ARM Cortex-A uses the Ne10 library. For more information, see Ne10 Conditions for MATLAB Functions to Support ARM Cortex-A Processors (Embedded Coder Support Package for ARM Cortex-A Processors).
Using the Code Replacement Library (CRL), you can generate optimized code that runs on ARM Cortex-M processors. To generate this optimized code, you must install the Embedded Coder Support Package for ARM Cortex-M Processors (Embedded Coder Support Package for ARM Cortex-M Processors). The generated code for ARM Cortex-M uses the CMSIS library. For more information, see CMSIS Conditions for MATLAB Functions to Support ARM Cortex-M Processors (Embedded Coder Support Package for ARM Cortex-M Processors).
GPU Code Generation
Generate CUDA® code for NVIDIA® GPUs using GPU Coder™.
Thread-Based Environment
Run code in the background using MATLAB® backgroundPool
or accelerate code with Parallel Computing Toolbox™ ThreadPool
.
This function fully supports thread-based environments. For more information, see Run MATLAB Functions in Thread-Based Environment.
GPU Arrays
Accelerate code by running on a graphics processing unit (GPU) using Parallel Computing Toolbox™.
Usage notes and limitations:
The output
Y
is always complex even if all the imaginary parts are zero.
For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
Distributed Arrays
Partition large arrays across the combined memory of your cluster using Parallel Computing Toolbox™.
This function fully supports distributed arrays. For more information, see Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox).
Version History
Introduced before R2006a
Open Example
You have a modified version of this example. Do you want to open this example with your edits?
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)