NumPy(Numerical Python的缩写)是一个开源的Python科学计算库。使用NumPy,就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数,涵盖线性代数运算、傅里叶变换和随机数生成等功能。本文主要介绍一下NumPy中fft.hfft方法的使用。

numpy.fft.hfft

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

计算具有Hermitian对称性(即实谱)的信号的FFT。即真实频谱。

参数:

a :array_like

输入数组。

b :int, 可选

输出的转换轴的长度。 对于n个输出点,

需要n//2 + 1个输入点。

 如果输入长于此长度,则将对其进行裁剪。 

如果比这短,则用零填充。 如果未给出n

则将其取为2*(m-1)

其中m是沿axis指定的轴的输入长度。

axis :int, 可选

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

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

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

1.10.0版中的新功能。

返回值:

outndarray

截断的或零填充的输入,

沿着由轴表示的轴进行转换,

或者如果轴未指定,则为最后一个。

变换轴的长度为n,如果n不给定,

则为2*m - 2,其中m为输入的变换轴的长度。

要得到奇数个输出点,必须指定n

例如在典型情况下为2*m - 1

Raises

IndexError

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

Notes

hfftihfft是一对类似于rfftirfft,但是对于相反的情况:在这里该信号具有在时域对称性厄米和是在频域中实际。因此,hfft如果结果是奇数,必须在此处提供结果的长度。

  • 偶数:在舍入误差内,ihfft(hfft(a, 2*len(a) - 2)) == a
  • 奇数:,舍入误差内。ihfft(hfft(a, 2*len(a) - 1)) == a

厄米输入的正确解释取决于原始数据的长度,如n所示。这是因为每种输入形状可能对应于奇数或偶数长度的信号。默认情况下,hfft 假设输出长度是偶数,这会将最后一个条目置于奈奎斯特频率;与其对称对应物混叠。通过埃尔米特对称性,该值因此被视为纯实数。为了避免丢失信息,必须给出完整信号的形状。

例子

>>> 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.]])

推荐文档

相关文档

大家感兴趣的内容

随机列表