flopscope.numpy.fft.rfftn
fnp.fft.rfftn(a, s=None, axes=None, norm=None, out=None)[flopscope source][numpy source]
Compute the N-dimensional discrete Fourier Transform for real input.
Adapted from NumPy docs np.fft.rfftn
N-D real FFT. Cost: 5*(N//2)*ceil(log2(N)), N=prod(s) (Cooley-Tukey radix-2; Van Loan 1992 §1.4).
This function computes the N-dimensional discrete Fourier Transform over any number of axes in an M-dimensional real array by means of the Fast Fourier Transform (FFT). By default, all axes are transformed, with the real transform performed over the last axis, while the remaining transforms are complex.
Parameters
- a:array_like
Input array, taken to be real.
- s:sequence of ints, optional
Shape (length along each transformed axis) to use from the input. (
s[0]refers to axis 0,s[1]to axis 1, etc.). The final element ofscorresponds tonforrfft(x, n), while for the remaining axes, it corresponds tonforfft(x, n). Along any axis, if the given shape is smaller than that of the input, the input is cropped. If it is larger, the input is padded with zeros.Changed in version 2.0.If
sis not given, the shape of the input along the axes specified byaxesis used.Deprecated since 2.0.Deprecated since 2.0.- 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 ifsis also not specified.Deprecated since 2.0.- norm:{"backward", "ortho", "forward"}, optional
Normalization mode (see flops.fft). Default is "backward". Indicates which direction of the forward/backward pair of transforms is scaled and with what normalization factor.
Added in version 1.20.0.- out:complex ndarray, optional
If provided, the result will be placed in this array. It should be of the appropriate shape and dtype for all axes (and hence is incompatible with passing in all but the trivial
s).Added in version 2.0.0.
Returns
- out:complex ndarray
The truncated or zero-padded input, transformed along the axes indicated by
axes, or by a combination ofsanda, as explained in the parameters section above. The length of the last axis transformed will bes[-1]//2+1, while the remaining transformed axes will have lengths according tos, or unchanged from the input.
Raises
- :ValueError
If
sandaxeshave different length.- :IndexError
If an element of
axesis larger than than the number of axes ofa.
See also
Notes
The transform for real input is performed over the last transformation
axis, as by rfft, then the transform over the remaining axes is
performed as by fftn. The order of the output is as for rfft for the
final transformation axis, and as for fftn for the remaining
transformation axes.
See fft for details, definitions and conventions used.
Examples
>>> import flopscope.numpy as fnp
>>> a = flops.ones((2, 2, 2))
>>> flops.fft.rfftn(a)
array([[[8.+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]]])>>> flops.fft.rfftn(a, axes=(2, 0))
array([[[4.+0.j, 0.+0.j], # may vary
[4.+0.j, 0.+0.j]],
[[0.+0.j, 0.+0.j],
[0.+0.j, 0.+0.j]]])