fft.
hfft
计算具有赫米特对称性的信号的FFT,即真实频谱。
输入数组。
输出转换轴的长度。为了 n 输出点, n//2 + 1 输入点是必要的。如果输入的长度大于此值,则会将其裁剪。如果短于此,则用零填充。如果 n 不是给予,而是接受 2*(m-1) 在哪里? m 输入沿指定轴的长度 axis .
n//2 + 1
2*(m-1)
m
计算自由流速度的轴。如果没有给出,则使用最后一个轴。
1.10.0 新版功能.
标准化模式(参见 numpy.fft ). 默认为“向后”。指示前向/后向变换对的哪个方向被缩放以及使用什么规格化因子。
numpy.fft
1.20.0 新版功能: 添加了“向后”、“向前”值。
截断的或零填充的输入,沿所指示的轴转换 axis 或者最后一个如果 axis 未指定。转换轴的长度为 n ,或者,如果 n 没有给出, 2*m - 2 在哪里? m 是输入的转换轴的长度。要获得奇数个输出点, n 必须指定,例如 2*m - 1 在典型情况下,
2*m - 2
2*m - 1
如果 axis 不是有效的轴 a .
参见
rfft
计算实际输入的一维FFT。
ihfft
逆 hfft .
笔记
hfft /是一对类似于 `rfft /` IRFFT`,但情况正好相反:这里的信号在时间域具有赫米特对称性,在频率域是真实的。所以这里是 hfft 如果结果是奇数,则必须提供结果的长度。
即使: ihfft(hfft(a, 2*len(a) - 2)) == a ,在舍入误差范围内,
ihfft(hfft(a, 2*len(a) - 2)) == a
奇数: ihfft(hfft(a, 2*len(a) - 1)) == a ,在舍入误差范围内。
ihfft(hfft(a, 2*len(a) - 1)) == a
厄米输入的正确解释取决于原始数据的长度,如 n . 这是因为每个输入形状可以对应于奇数或偶数长度信号。默认情况下, hfft 假设输出长度为偶数,将最后一个条目置于奈奎斯特频率;与对称对应项混叠。通过厄米对称性,这个值被认为是纯实数。为避免信息丢失,全信号的形状 must 被给予。
实例
>>> 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 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], # may vary [ 0.+0.j, 0.-0.j]]) >>> freq_spectrum = np.fft.hfft(signal) >>> freq_spectrum array([[ 1., 1.], [ 2., -2.]])