Rate this Page

torch.fft.fftn#

torch.fft.fftn(input,s=None,dim=None,norm=None,*,out=None)Tensor#

Computes the N dimensional discrete Fourier transform ofinput.

Note

The Fourier domain representation of any real signal satisfies theHermitian property:X[i_1,...,i_n]=conj(X[-i_1,...,-i_n]). Thisfunction always returns all positive and negative frequency terms eventhough, for real inputs, half of these values are redundant.rfftn() returns the more compact one-sided representationwhere only the positive frequencies of the last dimension are returned.

Note

Supports torch.half and torch.chalf on CUDA with GPU Architecture SM53 or greater.However it only supports powers of 2 signal length in every transformed dimensions.

Parameters
  • input (Tensor) – the input tensor

  • s (Tuple[int],optional) – Signal size in the transformed dimensions.If given, each dimensiondim[i] will either be zero-padded ortrimmed to the lengths[i] before computing the FFT.If a length-1 is specified, no padding is done in that dimension.Default:s=[input.size(d)fordindim]

  • dim (Tuple[int],optional) – Dimensions to be transformed.Default: all dimensions, or the lastlen(s) dimensions ifs is given.

  • norm (str,optional) –

    Normalization mode. For the forward transform(fftn()), these correspond to:

    • "forward" - normalize by1/n

    • "backward" - no normalization

    • "ortho" - normalize by1/sqrt(n) (making the FFT orthonormal)

    Wheren=prod(s) is the logical FFT size.Calling the backward transform (ifftn()) with the samenormalization mode will apply an overall normalization of1/nbetween the two transforms. This is required to makeifftn() the exact inverse.

    Default is"backward" (no normalization).

Keyword Arguments

out (Tensor,optional) – the output tensor.

Example

>>>x=torch.rand(10,10,dtype=torch.complex64)>>>fftn=torch.fft.fftn(x)

The discrete Fourier transform is separable, sofftn()here is equivalent to two one-dimensionalfft() calls:

>>>two_ffts=torch.fft.fft(torch.fft.fft(x,dim=0),dim=1)>>>torch.testing.assert_close(fftn,two_ffts,check_stride=False)