scipy.fft.

irfft#

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

計算 rfft 的反轉換。

此函數計算由 rfft 計算的實數輸入的 1 維 n 點離散傅立葉轉換的反轉換。 換句話說,在數值精度範圍內,irfft(rfft(x), len(x)) == x。(有關為什麼 len(a) 在此是必要的,請參閱下面的「註解」。)

輸入預期為 rfft 返回的形式,即實數零頻項,後跟複數正頻項,依頻率遞增順序排列。 由於實數輸入的離散傅立葉轉換是 Hermitian 對稱的,因此負頻項被視為相應正頻項的複共軛。

參數:
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

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

planobject, optional

此引數保留用於傳入下游 FFT 供應商提供的預先計算的 plan。 目前 SciPy 中未使用它。

在 1.5.0 版本中新增。

返回:
outndarray

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

引發:
IndexError

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

另請參閱

rfft

實數輸入的 1 維 FFT,irfft 是其反轉換。

fft

1 維 FFT。

irfft2

實數輸入的 2 維 FFT 的反轉換。

irfftn

實數輸入的 N 維 FFT 的反轉換。

註解

返回 x 的實數值 n 點反離散傅立葉轉換,其中 x 包含 Hermitian 對稱序列的非負頻率項。 n 是結果的長度,而不是輸入的長度。

如果您指定的 n 使得 a 必須進行零填充或截斷,則額外/移除的值將在高頻率處新增/移除。 因此,可以透過傅立葉內插法將序列重新取樣為 m 個點:a_resamp = irfft(rfft(a), m)

n 的預設值假設輸出長度為偶數。 根據 Hermitian 對稱性,最後一個虛數分量必須為 0,因此會被忽略。 為了避免遺失資訊,必須給定實數輸入的正確長度。

範例

>>> import scipy.fft
>>> scipy.fft.ifft([1, -1j, -1, 1j])
array([0.+0.j,  1.+0.j,  0.+0.j,  0.+0.j]) # may vary
>>> scipy.fft.irfft([1, -1j, -1])
array([0.,  1.,  0.,  0.])

請注意,普通 ifft 輸入中的最後一項是第二項的複共軛,並且輸出在任何地方都具有零虛部。 當呼叫 irfft 時,未指定負頻率,並且輸出陣列是純實數。