xrscipy.fft.fftn
- xrscipy.fft.fftn(x, coord, n=None, norm=None)
Compute the N-D discrete Fourier Transform.
This function computes the N-D discrete Fourier Transform over any number of axes in an M-D array by means of the Fast Fourier Transform (FFT).
- Parameters:
x (xarray object) – The data to transform.
s (mapping from coords to size, optional) – the shape of the result.
axes (sequence of ints, optional) – Axes over which to compute the FFT. If not given, the last
len(s)
axes are used, or all axes if s is also not specified.norm ({"backward", "ortho", "forward"}, optional) – Normalization mode (see fft). Default is “backward”.
- Returns:
out – The truncated or zero-padded input, transformed along the axes indicated by axes, or by a combination of s and x, as explained in the parameters section above.
- Return type:
complex ndarray
- Raises:
ValueError – If s and axes have different length.
IndexError – If an element of axes is larger than the number of axes of x.
See also
ifftn
The inverse of fftn, the inverse N-D FFT.
fft
The 1-D FFT, with definitions and conventions used.
rfftn
The N-D FFT of real input.
fft2
The 2-D FFT.
fftshift
Shifts zero-frequency terms to centre of array.
scipy.fft.fftn
scipy.fft.fftn : Original scipy implementation
Notes
The output, analogously to fft, contains the term for zero frequency in the low-order corner of all axes, the positive frequency terms in the first half of all axes, the term for the Nyquist frequency in the middle of all axes and the negative frequency terms in the second half of all axes, in order of decreasingly negative frequency.
Examples
>>> import scipy.fft >>> import numpy as np >>> x = np.mgrid[:3, :3, :3][0] >>> scipy.fft.fftn(x, axes=(1, 2)) array([[[ 0.+0.j, 0.+0.j, 0.+0.j], # may vary [ 0.+0.j, 0.+0.j, 0.+0.j], [ 0.+0.j, 0.+0.j, 0.+0.j]], [[ 9.+0.j, 0.+0.j, 0.+0.j], [ 0.+0.j, 0.+0.j, 0.+0.j], [ 0.+0.j, 0.+0.j, 0.+0.j]], [[18.+0.j, 0.+0.j, 0.+0.j], [ 0.+0.j, 0.+0.j, 0.+0.j], [ 0.+0.j, 0.+0.j, 0.+0.j]]])
Examples
>>> scipy.fft.fftn(x, (2, 2), axes=(0, 1)) array([[[ 2.+0.j, 2.+0.j, 2.+0.j], # may vary [ 0.+0.j, 0.+0.j, 0.+0.j]], [[-2.+0.j, -2.+0.j, -2.+0.j], [ 0.+0.j, 0.+0.j, 0.+0.j]]])
Examples
>>> import matplotlib.pyplot as plt >>> rng = np.random.default_rng() >>> [X, Y] = np.meshgrid(2 * np.pi * np.arange(200) / 12, ... 2 * np.pi * np.arange(200) / 34)
Examples
>>> S = np.sin(X) + np.cos(Y) + rng.uniform(0, 1, X.shape) >>> FS = scipy.fft.fftn(S) >>> plt.imshow(np.log(np.abs(scipy.fft.fftshift(FS))**2)) <matplotlib.image.AxesImage object at 0x...>
Examples
>>> plt.show()