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 的最後一個軸。
註解
hfft
/ihfft
與rfft
/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.])