numpy.fft.hfft#
- fft.hfft(a,n=None,axis=-1,norm=None,out=None)[source]#
Compute the FFT of a signal that has Hermitian symmetry, i.e., a realspectrum.
- Parameters:
- aarray_like
The input array.
- nint, optional
Length of the transformed axis of the output. Forn outputpoints,
n//2+1input points are necessary. If the input islonger than this, it is cropped. If it is shorter than this, it ispadded with zeros. Ifn is not given, it is taken to be2*(m-1)wheremis the length of the input along the axis specified byaxis.- axisint, optional
Axis over which to compute the FFT. If not given, the lastaxis is used.
- norm{“backward”, “ortho”, “forward”}, optional
Normalization mode (see
numpy.fft). Default is “backward”.Indicates which direction of the forward/backward pair of transformsis scaled and with what normalization factor.New in version 1.20.0:The “backward”, “forward” values were added.
- outndarray, optional
If provided, the result will be placed in this array. It should beof the appropriate shape and dtype.
New in version 2.0.0.
- Returns:
- outndarray
The truncated or zero-padded input, transformed along the axisindicated byaxis, or the last one ifaxis is not specified.The length of the transformed axis isn, or, ifn is not given,
2*m-2wheremis the length of the transformed axis ofthe input. To get an odd number of output points,n must bespecified, for instance as2*m-1in the typical case,
- Raises:
- IndexError
Ifaxis is not a valid axis ofa.
Notes
hfft/ihfftare a pair analogous torfft/irfft, but for theopposite case: here the signal has Hermitian symmetry in the timedomain and is real in the frequency domain. So here it’shfftforwhich you must supply the length of the result if it is to be odd.even:
ihfft(hfft(a,2*len(a)-2))==a, within roundoff error,odd:
ihfft(hfft(a,2*len(a)-1))==a, within roundoff error.
The correct interpretation of the hermitian input depends on the length ofthe original data, as given byn. This is because each input shape couldcorrespond to either an odd or even length signal. By default,
hfftassumes an even output length which puts the last entry at the Nyquistfrequency; aliasing with its symmetric counterpart. By Hermitian symmetry,the value is thus treated as purely real. To avoid losing information, theshape of the full signalmust be given.Examples
>>>importnumpyasnp>>>signal=np.array([1,2,3,4,3,2])>>>np.fft.fft(signal)array([15.+0.j, -4.+0.j, 0.+0.j, -1.-0.j, 0.+0.j, -4.+0.j]) # may vary>>>np.fft.hfft(signal[:4])# Input first half of signalarray([15., -4., 0., -1., 0., -4.])>>>np.fft.hfft(signal,6)# Input entire signal and truncatearray([15., -4., 0., -1., 0., -4.])
>>>signal=np.array([[1,1.j],[-1.j,2]])>>>np.conj(signal.T)-signal# check Hermitian symmetryarray([[ 0.-0.j, -0.+0.j], # may vary [ 0.+0.j, 0.-0.j]])>>>freq_spectrum=np.fft.hfft(signal)>>>freq_spectrumarray([[ 1., 1.], [ 2., -2.]])