上一主题

numpy.fft.irfftn

下一主题

numpy.fft.ihfft

numpy.fft.hfft

numpy.fft.hfft(a, n=None, axis=-1, norm=None)[source]

计算具有厄密对称(实际频谱)的信号的FFT。

参数:

a:array_like

输入数组。

n:int,可选

输出的变换轴的长度。对于n输出点,需要n//2+1个输入点。如果输入长于此,则会裁剪。如果它比这短,用零填充。如果未给出n,则根据沿指定的轴的输入长度确定。

axis:int,可选

用于计算FFT的轴。如果未给出,则使用最后一个轴。

norm:{None,“ortho”},可选

版本1.10.0中的新功能。

规范化模式(参见numpy.fft)。默认值为None。

返回:

out:ndarray

未指定沿指示的轴变换的截断或零填充输入,如果指定最后一个输入。变换轴的长度为n,或者如果未给出n,则2*(m-1)其中m是输入的变换轴的长度。要获得奇数个输出点,必须指定n

上升:

IndexError

如果axis大于a的最后一个轴。

也可以看看

rfft
计算实际输入的一维FFT。
ihfft
hfft的逆。

笔记

hfft / ihfft是类似于rfft / irfft的对,但是对于相反的情况: Hermitian在时域中的对称性,并且在频域中是真实的。所以这里是hfft,如果它是奇数,你必须提供结果的长度:ihfft(hfft(a), len a)) == a

例子

>>> 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])
>>> np.fft.hfft(signal[:4]) # Input first half of signal
array([ 15.,  -4.,   0.,  -1.,   0.,  -4.])
>>> np.fft.hfft(signal, 6)  # Input entire signal and truncate
array([ 15.,  -4.,   0.,  -1.,   0.,  -4.])
>>> signal = np.array([[1, 1.j], [-1.j, 2]])
>>> np.conj(signal.T) - signal   # check Hermitian symmetry
array([[ 0.-0.j,  0.+0.j],
       [ 0.+0.j,  0.-0.j]])
>>> freq_spectrum = np.fft.hfft(signal)
>>> freq_spectrum
array([[ 1.,  1.],
       [ 2., -2.]])