Fast Fourier Transforms

No overview available.

Topics

First Steps

Finding the Component Frequencies in a Composite Sine Wave

Use 1D fast Fourier transform to compute the frequency components of a signal.

Halftone Descreening with 2D Fast Fourier Transform

Reduce or remove periodic artifacts from images.

1D Fast Fourier Transforms (Support Functions)

vDSP_create_fftsetup

Builds a data structure that contains precalculated data for use by single-precision FFT functions.

vDSP_create_fftsetupD

Builds a data structure that contains precalculated data for use by double-precision FFT functions.

vDSP_destroy_fftsetup

Frees an existing single-precision FFT data structure.

vDSP_destroy_fftsetupD

Frees an existing double-precision FFT data structure.

1D Fast Fourier Transforms (In-Place Real)

The set of in-place real fast Fourier transform routines includes:

Table 1

In-place real fast Fourier transform routines

Single-precision

Double-precision

Does not use temporary buffer

vDSP_fft_zrip

vDSP_fft_zripD

Uses temporary buffer

vDSP_fft_zript

vDSP_fft_zriptD

Multiple signals; does not use temporary buffer

vDSP_fftm_zrip

vDSP_fftm_zripD

Multiple signals; uses temporary buffer

vDSP_fftm_zript

vDSP_fftm_zriptD

The temporary buffer versions can use a temporary buffer passed as a parameter for improved performance.

Call the vDSP_create_fftsetup function before you call the single precision routines to obtain an FFTSetup object that must remain available when you call the transform routine.

Call the vDSP_create_fftsetupD function before you call the double precision routines to obtain an FFTSetupD object that must remain available when you call the transform routine.

Use the DFT routines instead of these wherever possible. (For example, instead of calling vDSP_fft_zrip with a setup created with vDSP_create_fftsetup, call vDSP_DFT_Execute with a setup created with vDSP_DFT_zrop_CreateSetup.)

vDSP_fft_zrip

Computes an in-place single-precision real discrete Fourier transform, either from the time domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).

vDSP_fft_zripD

Computes an in-place double-precision real discrete Fourier transform, either from the time domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).

vDSP_fft_zript

Computes an in-place single-precision real discrete Fourier transform, either from the time domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse). Usesa temporary buffer to improve performance.

vDSP_fft_zriptD

Computes an in-place double-precision real discrete Fourier transform, either from the time domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).

vDSP_fftm_zrip

Performs the same operation as vDSP_fft_zrip, but on multiple signals with a single call.

vDSP_fftm_zripD

Performs the same operation as vDSP_fft_zripD, but on multiple signals with a single call.

vDSP_fftm_zript

Performs the same operation as vDSP_fft_zript, but on multiple signals with a single call.

vDSP_fftm_zriptD

Performs the same operation as vDSP_fft_zriptD, but on multiple signals with a single call.

1D Fast Fourier Transforms (Out-of-Place Real)

The set of out-of-place real fast Fourier transform routines includes:

Table 2

Out-of-place real fast Fourier transform routines

Single-precision

Double-precision

Does not use temporary buffer

vDSP_fft_zrop

vDSP_fft_zropD

Uses temporary buffer

vDSP_fft_zropt

vDSP_fft_zroptD

Multiple signals; does not use temporary buffer

vDSP_fftm_zrop

vDSP_fftm_zropD

Multiple signals; uses temporary buffer

vDSP_fftm_zropt

vDSP_fftm_zroptD

The temporary buffer versions can use a temporary buffer passed as a parameter for improved performance.

Call the vDSP_create_fftsetup function before you call the single precision routines to obtain an FFTSetup object that must remain available when you call the transform routine.

Call the vDSP_create_fftsetupD function before you call the double precision routines to obtain an FFTSetupD object that must remain available when you call the transform routine.

Use the DFT routines instead of these wherever possible. (For example, instead of calling vDSP_fft_zrop with a setup created with vDSP_create_fftsetup, call vDSP_DFT_Execute with a setup created with vDSP_DFT_zrop_CreateSetup.)

vDSP_fft_zrop

Computes an out-of-place single-precision real discrete Fourier transform, either from the time domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).

vDSP_fft_zropD

Computes an out-of-place double-precision real discrete Fourier transform, either from the time domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).

vDSP_fft_zropt

Computes an out-of-place single-precision real discrete Fourier transform, either from the time domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).

vDSP_fft_zroptD

Computes an out-of-place double-precision real discrete Fourier transform, either from the time domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).

vDSP_fftm_zrop

Performs the same operation as vDSP_fft_zrop, but on multiple signals with a single call.

vDSP_fftm_zropD

Performs the same operation as VDSP_fft_zropD, but on multiple signals with a single call.

vDSP_fftm_zropt

Performs the same operation as VDSP_fft_zropt, but on multiple signals with a single call.

vDSP_fftm_zroptD

Performs the same operation as VDSP_fft_zroptD, but on multiple signals with a single call.

1D Fast Fourier Transforms (In-Place Complex)

The set of in-place complex discrete Fourier transform routines includes:

Table 3

In-place complex fast Fourier transform routines

Single-precision

Double-precision

Does not use temporary buffer

vDSP_fft_zip

vDSP_fft_zipD

Uses temporary buffer

vDSP_fft_zipt

vDSP_fft_ziptD

Multiple signals; does not use temporary memory

vDSP_fftm_zip

vDSP_fftm_zipD

Multiple signals; uses temporary memory

vDSP_fftm_zipt

vDSP_fftm_ziptD

The temporary buffer versions can use a temporary buffer passed as a parameter for improved performance.

Call the vDSP_create_fftsetup function before you call the single precision routines to obtain an FFTSetup object that must remain available when you call the transform routine.

Call the vDSP_create_fftsetupD function before you call the double precision routines to obtain an FFTSetupD object that must remain available when you call the transform routine.

Use the DFT routines instead of these wherever possible. (For example, instead of calling vDSP_fft_zip with a setup created with vDSP_create_fftsetup, call vDSP_DFT_Execute with a setup created with vDSP_DFT_zop_CreateSetup.)

vDSP_fft_zip

Computes an in-place single-precision complex discrete Fourier transform of the input/output vector signal, either from the time domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse). Does not use temporary memory.

vDSP_fft_zipD

Computes an in-place double-precision complex discrete Fourier transform of the input/output vector signal, either from the time domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse). Does not use temporary memory.

vDSP_fft_zipt

Performs the same operation as the vDSP_fft_zip function but uses a temporary buffer to hold intermediate results for improved performance. Computes an in-place single-precision complex discrete Fourier transform of the input/output vector signal, either from the time domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).

vDSP_fft_ziptD

Performs the same operation as the vDSP_fft_zipD function but uses A temporary buffer for improved performance. Computes an in-place double-precision complex discrete Fourier transform of the input/output vector signal, either from the time domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).

vDSP_fftm_zip

Performs the same operation as vDSP_fft_zip, but on multiple signals with a single call.

vDSP_fftm_zipD

Performs the same operation as vDSP_fft_zipD, but on multiple signals with a single call.

vDSP_fftm_zipt

Performs the same operation as vDSP_fft_zipt, but on multiple signals with a single call.

vDSP_fftm_ziptD

Performs the same operation as vDSP_fft_ziptD, but on multiple signals with a single call. Performs the same operation as the vDSP_fftm_zipD function but uses a temporary buffer for improved performance.

1D Fast Fourier Transforms (Out-of-Place Complex)

The set of out-of-place complex discrete Fourier transform routines includes:

Table 4

Out-of-place complex fast Fourier transform routines

Single-precision

Double-precision

Does not use temporary buffer

vDSP_fft_zop

vDSP_fft_zopD

Uses temporary buffer

vDSP_fft_zopt

vDSP_fft_zoptD

Multiple signals; does not use temporary buffer

vDSP_fftm_zop

vDSP_fftm_zopD

Multiple signals; uses temporary buffer

vDSP_fft_zopt

vDSP_fftm_zoptD

Does not use temporary buffer

vDSP_fft3_zop

vDSP_fft3_zopD

Does not use temporary buffer

vDSP_fft5_zop

vDSP_fft5_zopD

The temporary buffer versions can use a temporary buffer passed as a parameter for improved performance.

Call the vDSP_create_fftsetup function before you call the single precision routines to obtain an FFTSetup object that must remain available when you call the transform routine.

Call the vDSP_create_fftsetupD function before you call the double precision routines to obtain an FFTSetupD object that must remain available when you call the transform routine.

Use the DFT routines instead of these wherever possible. (For example, instead of calling vDSP_fft_zip with a setup created with vDSP_create_fftsetup, call vDSP_DFT_Execute with a setup created with vDSP_DFT_zop_CreateSetup.)

vDSP_fft_zop

Computes an out-of-place single-precision complex discrete Fourier transform of the input vector, either from the time domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).

vDSP_fft_zopD

Computes an out-of-place double-precision complex discrete Fourier transform of the input vector, either from the time domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).

vDSP_fft_zopt

Computes an out-of-place single-precision complex discrete Fourier transform of the input vector, either from the time domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).

vDSP_fft_zoptD

Computes an out-of-place double-precision complex discrete Fourier transform of the input vector, either from the time domain to the frequency domain (forward) or from the frequency domain to the time domain (inverse).

vDSP_fftm_zop

Performs the same operation as vDSP_fft_zop, but on multiple signals with a single call.

vDSP_fftm_zopD

Performs the same operation as vDSP_fft_zopD, but on multiple signals with a single call.

vDSP_fftm_zopt

Performs the same operation as vDSP_fft_zopt, but on multiple signals with a single call.

vDSP_fftm_zoptD

Performs the same operation as vDSP_fft_zoptD, but on multiple signals with a single call.

vDSP_fft3_zop

Computes an out-of-place radix-3 complex Fourier transform, either forward or inverse. The number of input and output values processed equals 3 times the power of 2 specified by parameter Log2N; single precision.

Deprecated
vDSP_fft3_zopD

Computes an out-of-place radix-3 complex Fourier transform, either forward or inverse. The number of input and output values processed equals 3 times the power of 2 specified by parameter Log2N; double precision.

Deprecated
vDSP_fft5_zop

Computes an out-of-place radix-5 complex Fourier transform, either forward or inverse. The number of input and output values processed equals 5 times the power of 2 specified by parameter Log2N; single precision.

Deprecated
vDSP_fft5_zopD

Computes an out-of-place radix-5 complex Fourier transform, either forward or inverse. The number of input and output values processed equals 5 times the power of 2 specified by parameter Log2N; double precision.

Deprecated

1D Fast Fourier Transforms (Fixed Length)

vDSP_FFT16_copv

Performs a 16-element FFT on interleaved complex data.

vDSP_FFT32_copv

Performs a 32-element FFT on interleaved complex data.

vDSP_FFT16_zopv

Performs a 16-element FFT on split complex data.

vDSP_FFT32_zopv

Performs a 32-element FFT on split complex data.

2D Fast Fourier Transforms (In-Place Complex)

vDSP_fft2d_zip

Computes an in-place single-precision complex discrete FFT, either from the spatial domain to the frequency domain (forward) or from the frequency domain to the spatial domain (inverse).

vDSP_fft2d_zipD

Computes an in-place double-precision complex discrete FFT, either from the spatial domain to the frequency domain (forward) or from the frequency domain to the spatial domain (inverse).

vDSP_fft2d_zipt

Computes an in-place single-precision complex discrete FFT, either from the spatial domain to the frequency domain (forward) or from the frequency domain to the spatial domain (inverse). A buffer is used for intermediate results.

vDSP_fft2d_ziptD

Computes an in-place double-precision complex discrete FFT, either from the spatial domain to the frequency domain (forward) or from the frequency domain to the spatial domain (inverse). A buffer is used for intermediate results.

2D Fast Fourier Transforms (Out-of-Place Complex)

vDSP_fft2d_zop

Computes an out-of-place single-precision complex discrete FFT, either from the spatial domain to the frequency domain (forward) or from the frequency domain to the spatial domain (inverse).

vDSP_fft2d_zopD

Computes an out-of-place double-precision complex discrete FFT, either from the spatial domain to the frequency domain (forward) or from the frequency domain to the spatial domain (inverse).

vDSP_fft2d_zopt

Computes an out-of-place single-precision complex discrete FFT, either from the spatial domain to the frequency domain (forward) or from the frequency domain to the spatial domain (inverse). A buffer is used for intermediate results.

vDSP_fft2d_zoptD

Computes an out-of-place double-precision complex discrete FFT, either from the spatial domain to the frequency domain (forward) or from the frequency domain to the spatial domain (inverse). A buffer is used for intermediate results.

2D Fast Fourier Transforms (In-Place Real)

vDSP_fft2d_zrip

Computes an in-place single-precision real discrete FFT, either from the spatial domain to the frequency domain (forward) or from the frequency domain to the spatial domain (inverse).

vDSP_fft2d_zripD

Computes an in-place double-precision real discrete FFT, either from the spatial domain to the frequency domain (forward) or from the frequency domain to the spatial domain (inverse).

vDSP_fft2d_zript

Computes an in-place single-precision real discrete FFT, either from the spatial domain to the frequency domain (forward) or from the frequency domain to the spatial domain (inverse). A buffer is used for intermediate results.

vDSP_fft2d_zriptD

Computes an in-place double-precision real discrete FFT, either from the spatial domain to the frequency domain (forward) or from the frequency domain to the spatial domain (inverse). A buffer is used for intermediate results.

2D Fast Fourier Transforms (Out-of-Place Real)

vDSP_fft2d_zrop

Computes an out-of-place single-precision real discrete FFT, either from the spatial domain to the frequency domain (forward) or from the frequency domain to the spatial domain (inverse).

vDSP_fft2d_zropD

Computes an out-of-place double-precision real discrete FFT, either from the spatial domain to the frequency domain (forward) or from the frequency domain to the spatial domain (inverse).

vDSP_fft2d_zropt

Computes an out-of-place single-precision real discrete FFT, either from the spatial domain to the frequency domain (forward) or from the frequency domain to the spatial domain (inverse). A buffer is used for intermediate results.

vDSP_fft2d_zroptD

Computes an out-of-place double-precision real discrete FFT, either from the spatial domain to the frequency domain (forward) or from the frequency domain to the spatial domain (inverse). A buffer is used for intermediate results.

Data Types

FFTSetup

An opaque type that contains setup information for a given FFT transform.

FFTSetupD

An opaque type that contains setup information for a given double-precision FFT transform.

Constants

FFTDirection

Specifies whether to perform a forward or inverse FFT.

FFTRadix

The size of the FFT decomposition.

FFTWindow

Specifies the windowing mode for data values in an FFT or reverse FFT.