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+1 input 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)wherem is 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 (seenumpy.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-2 wherem is the length of the transformed axis ofthe input. To get an odd number of output points,n must bespecified, for instance as2*m-1 in the typical case,

Raises:
IndexError

Ifaxis is not a valid axis ofa.

See also

rfft

Compute the one-dimensional FFT for real input.

ihfft

The inverse ofhfft.

Notes

hfft/ihfft are 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’shfft forwhich 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.]])
On this page