numpy.fft.irfft#
- fft.irfft(a, n=None, axis=-1, norm=None, out=None)[原始碼]#
計算
rfft
的反轉換。此函數計算由
rfft
計算的實數輸入的一維 n 點離散傅立葉轉換的反轉換。換句話說,在數值精度範圍內,irfft(rfft(a), len(a)) == a
。(請參閱下面的「註解」以了解為何此處需要len(a)
。)輸入預期為
rfft
傳回的形式,即實數零頻率項,後跟依頻率遞增順序排列的複數正頻率項。由於實數輸入的離散傅立葉轉換是 Hermitian 對稱的,因此負頻率項被視為對應正頻率項的複數共軛。- 參數:
- 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-1)
,其中m
是輸入轉換軸的長度。若要取得奇數個輸出點,必須指定 n。
- 引發:
- IndexError
如果 axis 不是 a 的有效軸。
另請參閱
註解
傳回 a 的實數值 n 點反離散傅立葉轉換,其中 a 包含 Hermitian 對稱序列的非負頻率項。n 是結果的長度,而不是輸入的長度。
如果您指定的 n 使得 a 必須進行零填充或截斷,則額外/移除的值將在高頻率處新增/移除。因此,可以透過傅立葉內插法將序列重新取樣到 m 個點:
a_resamp = irfft(rfft(a), m)
。hermitian 輸入的正確解譯取決於原始資料的長度,如 n 所給定。這是因為每個輸入形狀可能對應於奇數或偶數長度訊號。依預設,
irfft
假設偶數輸出長度,這會將最後一個條目放在奈奎斯特頻率;與其對稱對應物混疊。根據 Hermitian 對稱性,該值因此被視為純實數。為了避免遺失資訊,必須給定實數輸入的正確長度。範例
>>> import numpy as np >>> np.fft.ifft([1, -1j, -1, 1j]) array([0.+0.j, 1.+0.j, 0.+0.j, 0.+0.j]) # may vary >>> np.fft.irfft([1, -1j, -1]) array([0., 1., 0., 0.])
請注意,普通
ifft
的輸入中的最後一項是第二項的複數共軛,並且輸出在所有位置都具有零虛部。當呼叫irfft
時,未指定負頻率,並且輸出陣列是純實數。