dpnp.fft.rfft
- dpnp.fft.rfft(a, n=None, axis=-1, norm=None, out=None)[source]
Compute the one-dimensional discrete Fourier Transform for real input.
This function computes the one-dimensional n-point discrete Fourier Transform (DFT) of a real-valued array by means of an efficient algorithm called the Fast Fourier Transform (FFT).
For full documentation refer to
numpy.fft.rfft
.- Parameters:
a ({dpnp.ndarray, usm_ndarray}) -- Input array, taken to be real.
n ({None, int}, optional) -- Number of points along transformation axis in the input to use. If n is smaller than the length of the input, the input is cropped. If it is larger, the input is padded with zeros. If n is not given, the length of the input along the axis specified by axis is used. Default:
None
.axis (int, optional) -- Axis over which to compute the FFT. If not given, the last axis is used. Default:
-1
.norm ({None, "backward", "ortho", "forward"}, optional) -- Normalization mode (see
dpnp.fft
). Indicates which direction of the forward/backward pair of transforms is scaled and with what normalization factor.None
is an alias of the default option"backward"
. Default:"backward"
.out ({None, dpnp.ndarray or usm_ndarray of complex dtype}, optional) -- If provided, the result will be placed in this array. It should be of the appropriate shape and dtype. Default:
None
.
- Returns:
out -- The truncated or zero-padded input, transformed along the axis indicated by axis, or the last one if axis is not specified. If n is even, the length of the transformed axis is
(n/2)+1
. If n is odd, the length is(n+1)/2
.- Return type:
dpnp.ndarray of complex dtype
See also
dpnp.fft
For definition of the DFT and conventions used.
dpnp.fft.irfft
The inverse of
dpnp.fft.rfft
.dpnp.fft.fft
The one-dimensional FFT of general (complex) input.
dpnp.fft.fftn
The N-dimensional FFT.
dpnp.fft.rfftn
The N-dimensional FFT of real input.
Notes
When the DFT is computed for purely real input, the output is Hermitian-symmetric, i.e. the negative frequency terms are just the complex conjugates of the corresponding positive-frequency terms, and the negative-frequency terms are therefore redundant. This function does not compute the negative frequency terms, and the length of the transformed axis of the output is therefore
n//2 + 1
.When
A = dpnp.fft.rfft(a)
and fs is the sampling frequency,A[0]
contains the zero-frequency term 0*fs, which is real due to Hermitian symmetry.If n is even,
A[-1]
contains the term representing both positive and negative Nyquist frequency (+fs/2 and -fs/2), and must also be purely real. If n is odd, there is no term at fs/2;A[-1]
contains the largest positive frequency (fs/2*(n-1)/n), and is complex in the general case.Examples
>>> import dpnp as np >>> a = np.array([0, 1, 0, 0]) >>> np.fft.fft(a) array([ 1.+0.j, 0.-1.j, -1.+0.j, 0.+1.j]) # may vary >>> np.fft.rfft(a) array([ 1.+0.j, 0.-1.j, -1.+0.j]) # may vary
Notice how the final element of the
dpnp.fft.fft
output is the complex conjugate of the second element, for real input. Fordpnp.fft.rfft
, this symmetry is exploited to compute only the non-negative frequency terms.