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的最后一个轴。
笔记
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.]])