scipy.fft.irfft¶
-
scipy.fft.
irfft
(x, n=None, axis=-1, norm=None, overwrite_x=False, workers=None)[source]¶ Compute the inverse of the n-point DFT for real input.
This function computes the inverse of the one-dimensional n-point discrete Fourier Transform of real input computed by
rfft
. In other words,irfft(rfft(x), len(x)) == x
to within numerical accuracy. (See Notes below for whylen(a)
is necessary here.)The input is expected to be in the form returned by
rfft
, i.e. the real zero-frequency term followed by the complex positive frequency terms in order of increasing frequency. Since the discrete Fourier Transform of real input is Hermitian-symmetric, the negative frequency terms are taken to be the complex conjugates of the corresponding positive frequency terms.- Parameters
- xarray_like
The input array.
- nint, optional
Length of the transformed axis of the output. For n output points,
n//2+1
input points are necessary. If the input is longer than this, it is cropped. If it is shorter than this, it is padded with zeros. If n is not given, it is taken to be2*(m-1)
wherem
is the length of the input along the axis specified by axis.- axisint, optional
Axis over which to compute the inverse FFT. If not given, the last axis is used.
- norm{None, “ortho”}, optional
Normalization mode (see
fft
). Default is None.- overwrite_xbool, optional
If True, the contents of x can be destroyed; the default is False. See
fft
for more details.- workersint, optional
Maximum number of workers to use for parallel computation. If negative, the value wraps around from
os.cpu_count()
. Seefft
for more details.
- Returns
- outndarray
The truncated or zero-padded input, transformed along the axis indicated by axis, or the last one if axis is not specified. The length of the transformed axis is n, or, if n is not given,
2*(m-1)
wherem
is the length of the transformed axis of the input. To get an odd number of output points, n must be specified.
- Raises
- IndexError
If axis is larger than the last axis of x.
See also
Notes
Returns the real valued n-point inverse discrete Fourier transform of x, where x contains the non-negative frequency terms of a Hermitian-symmetric sequence. n is the length of the result, not the input.
If you specify an n such that a must be zero-padded or truncated, the extra/removed values will be added/removed at high frequencies. One can thus resample a series to m points via Fourier interpolation by:
a_resamp = irfft(rfft(a), m)
.The default value of n assumes an even output length. By the Hermitian symmetry, the last imaginary component must be 0 and so is ignored. To avoid losing information, the correct length of the real input must be given.
Examples
>>> import scipy.fft >>> scipy.fft.ifft([1, -1j, -1, 1j]) array([0.+0.j, 1.+0.j, 0.+0.j, 0.+0.j]) # may vary >>> scipy.fft.irfft([1, -1j, -1]) array([0., 1., 0., 0.])
Notice how the last term in the input to the ordinary
ifft
is the complex conjugate of the second term, and the output has zero imaginary part everywhere. When callingirfft
, the negative frequencies are not specified, and the output array is purely real.