numpy.fft.hfft#
- fft.hfft(a, n=None, axis=-1, norm=None, out=None)[source]#
計算具有 Hermitian 對稱性(即實數頻譜)訊號的 FFT。
- 參數:
- aarray_like (類陣列)
輸入陣列。
- nint, 選項
輸出轉換軸的長度。對於 n 個輸出點,需要
n//2 + 1
個輸入點。如果輸入長度超過此值,則會被裁剪。如果短於此值,則會以零填充。如果未給定 n,則會取2*(m-1)
,其中m
是沿著 axis 指定軸的輸入長度。- axisint, 選項
計算 FFT 的軸。如果未給定,則使用最後一個軸。
- norm{“backward”, “ortho”, “forward”}, 選項
正規化模式(請參閱
numpy.fft
)。預設為 “backward”。表示正向/反向轉換對中的哪個方向被縮放以及使用哪個正規化因子。版本 1.20.0 新增: 新增了 “backward”、“forward” 值。
- outndarray, 選項
如果提供,結果將放置在此陣列中。它應該具有適當的形狀和 dtype。
版本 2.0.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
,在捨入誤差範圍內。
hermitian 輸入的正確解釋取決於原始資料的長度,由 n 給定。這是因為每個輸入形狀可能對應於奇數或偶數長度的訊號。預設情況下,
hfft
假設偶數輸出長度,這會將最後一個條目放在 Nyquist 頻率;與其對稱對應部分混疊。根據 Hermitian 對稱性,該值因此被視為純實數。為了避免遺失資訊,必須給出完整訊號的形狀。範例
>>> import numpy as np >>> 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.]])