fftn
N-D fast Fourier transform
Description
Y = fftn(
returns
the multidimensional
Fourier transform of an N-D array using a fast Fourier transform
algorithm. The N-D transform is equivalent to computing the 1-D transform
along each dimension of X
)X
. The output Y
is
the same size as X
.
Y = fftn(
truncates X
,sz
)X
or
pads X
with trailing zeros before taking the transform
according to the elements of the vector sz
. Each
element of sz
defines the length of the corresponding
transform dimensions. For example, if X
is a 5-by-5-by-5
array, then Y = fftn(X,[8 8 8])
pads each dimension
with zeros resulting in an 8-by-8-by-8 transform Y
.
Examples
3-D Transform
You can use the fftn
function to compute a 1-D fast Fourier transform in each dimension of a multidimensional array.
Create a 3-D signal X
. The size of X
is 20-by-20-by-20.
x = (1:20)'; y = 1:20; z = reshape(1:20,[1 1 20]); X = cos(2*pi*0.01*x) + sin(2*pi*0.02*y) + cos(2*pi*0.03*z);
Compute the 3-D Fourier transform of the signal, which is also a 20-by-20-by-20 array.
Y = fftn(X);
Pad X
with zeros to compute a 32-by-32-by-32 transform.
m = nextpow2(20); Y = fftn(X,[2^m 2^m 2^m]); size(Y)
ans = 1×3
32 32 32
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 fftn
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
sz
— Length of transform dimensions
vector of positive integers
Length of the transform dimensions, specified as a vector of positive integers. The elements
of sz
correspond to the transformation lengths of the
corresponding dimensions of X
.
length(sz)
must be at least
ndims(X)
.
Data Types: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| logical
More About
N-D Fourier Transform
The discrete Fourier transform Y of an N-D array X is defined as
Each dimension has length mk for k = 1,2,...,N, and are complex roots of unity where i is the imaginary unit.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Usage notes and limitations:
The
sz
argument must have a fixed size.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). 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).
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). 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).
GPU Code Generation
Generate CUDA® code for NVIDIA® GPUs using GPU Coder™.
Usage notes and limitations:
The
sz
argument must have a fixed size.
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™.
The fftn
function
supports GPU array input with these 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
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)