scipy.fft.

hfft#

scipy.fft.hfft(x, n=None, axis=-1, norm=None, overwrite_x=False, workers=None, *, plan=None)[source]#

計算具有 Hermitian 對稱性(即實數頻譜)訊號的 FFT。

參數:
xarray_like

輸入陣列。

nint, optional

輸出轉換軸的長度。對於 n 個輸出點,需要 n//2 + 1 個輸入點。如果輸入長於此,則會被裁剪。如果短於此,則會以零填充。如果未給定 n,則會取 2*(m-1),其中 m 是沿著 axis 指定軸的輸入長度。

axisint, optional

計算 FFT 的軸。如果未給定,則使用最後一個軸。

norm{“backward”, “ortho”, “forward”}, optional

正規化模式(請參閱 fft)。預設為 “backward”。

overwrite_xbool, optional

如果為 True,則可以破壞 x 的內容;預設為 False。有關更多詳細資訊,請參閱 fft

workersint, optional

用於平行計算的最大工作人員數量。如果為負數,則值會從 os.cpu_count() 環繞。有關更多詳細資訊,請參閱 fft

planobject, optional

此參數保留用於傳遞由下游 FFT 供應商提供的預先計算的計畫。目前在 SciPy 中尚未使用。

在 1.5.0 版本中新增。

回傳:
outndarray

沿著 axis 指示的軸轉換的截斷或零填充輸入,如果未指定 axis,則為最後一個軸。轉換軸的長度為 n,或者,如果未給定 n,則為 2*m - 2,其中 m 是輸入轉換軸的長度。若要取得奇數個輸出點,則必須指定 n,例如,在典型情況下為 2*m - 1

引發:
IndexError

如果 axis 大於 a 的最後一個軸。

參見

rfft

計算實數輸入的 1-D FFT。

ihfft

hfft 的反函數。

hfftn

計算 Hermitian 訊號的 N-D FFT。

註解

hfft/ihfftrfft/irfft 類似,但用於相反的情況:此處訊號在時域中具有 Hermitian 對稱性,在頻域中為實數。因此,此處為 hfft,如果結果為奇數,您必須提供結果的長度。* 偶數:ihfft(hfft(a, 2*len(a) - 2) == a,在捨入誤差範圍內,* 奇數:ihfft(hfft(a, 2*len(a) - 1) == a,在捨入誤差範圍內。

範例

>>> from scipy.fft import fft, hfft
>>> import numpy as np
>>> a = 2 * np.pi * np.arange(10) / 10
>>> signal = np.cos(a) + 3j * np.sin(3 * a)
>>> fft(signal).round(10)
array([ -0.+0.j,   5.+0.j,  -0.+0.j,  15.-0.j,   0.+0.j,   0.+0.j,
        -0.+0.j, -15.-0.j,   0.+0.j,   5.+0.j])
>>> hfft(signal[:6]).round(10) # Input first half of signal
array([  0.,   5.,   0.,  15.,  -0.,   0.,   0., -15.,  -0.,   5.])
>>> hfft(signal, 10)  # Input entire signal and truncate
array([  0.,   5.,   0.,  15.,  -0.,   0.,   0., -15.,  -0.,   5.])