捷徑

torch.fft.irfft2

torch.fft.irfft2(input, s=None, dim=(-2, -1), norm=None, *, out=None) Tensor

計算 rfft2() 的反轉換。等同於 irfftn(),但預設情況下僅對最後兩個維度執行 IFFT。

input 被解釋為傅立葉域中的單邊 Hermitian 訊號,如 rfft2() 所產生。根據 Hermitian 特性,輸出將會是實數值。

注意

某些輸入頻率必須是實數值,才能滿足 Hermitian 特性。 在這些情況下,虛數分量將會被忽略。 例如,零頻率項中的任何虛數分量都無法在真實輸出中表示,因此永遠會被忽略。

注意

Hermitian 輸入的正確解釋取決於原始資料的長度,如 s 所給定。 這是因為每個輸入形狀可能對應於奇數或偶數長度的訊號。 預設情況下,訊號被假定為偶數長度,而奇數訊號將無法正確往返。 因此,建議始終傳遞訊號形狀 s

注意

在 GPU 架構 SM53 或更高版本的 CUDA 上支援 torch.half 和 torch.chalf。 但是,它僅支援每個轉換維度中 2 的冪次的訊號長度。 使用預設參數,最後一個維度的大小應為 (2^n + 1),因為參數 s 預設為偶數輸出大小 = 2 * (last_dim_size - 1)

參數
  • input (Tensor) – 輸入張量

  • s (Tuple[int], optional) – 轉換維度中的訊號大小。如果給定,每個維度 dim[i] 將在計算實數 FFT 之前,被零填充或裁剪到長度 s[i]。如果指定長度 -1,則不會在該維度中進行填充。預設為最後一個維度中的偶數輸出:s[-1] = 2*(input.size(dim[-1]) - 1)

  • dim (Tuple[int], optional) – 要轉換的維度。最後一個維度必須是半 Hermitian 壓縮維度。預設值:最後兩個維度。

  • norm (str, optional) –

    正規化模式。對於反向轉換 (irfft2()),這些對應於

    • "forward" - 無正規化

    • "backward" - 正規化 1/n

    • "ortho" - 正規化 1/sqrt(n) (使實數 IFFT 正交)

    其中 n = prod(s) 是邏輯 IFFT 大小。使用相同的正規化模式呼叫正向轉換 (rfft2()) 將在兩個轉換之間應用整體正規化 1/n。這是使 irfft2() 成為精確反轉換所必需的。

    預設值為 "backward" (正規化 1/n)。

關鍵字參數

out (Tensor, optional) – 輸出張量。

範例

>>> t = torch.rand(10, 9)
>>> T = torch.fft.rfft2(t)

若未指定輸出長度給 irfft2(),則輸出將無法正確往返,因為輸入在最後一個維度中是奇數長度

>>> torch.fft.irfft2(T).size()
torch.Size([10, 8])

因此,建議始終傳遞訊號形狀 s

>>> roundtrip = torch.fft.irfft2(T, t.size())
>>> roundtrip.size()
torch.Size([10, 9])
>>> torch.testing.assert_close(roundtrip, t, check_stride=False)

文件

取得 PyTorch 的完整開發人員文件

查看文件

教學

取得適合初學者和進階開發人員的深入教學課程

查看教學

資源

尋找開發資源並獲得問題解答

查看資源