捷徑

torch.fft.rfft2

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

計算實數 input 的二維離散傅立葉變換。等同於 rfftn(),但預設只對最後兩個維度進行 FFT。

實數訊號的 FFT 具有 Hermitian 對稱性,X[i, j] = conj(X[-i, -j]),因此完整的 fft2() 輸出包含冗餘資訊。rfft2() 則省略最後一個維度的負頻率。

注意

在 GPU 架構 SM53 或更高版本的 CUDA 上支援 torch.half。 但是,它僅支援每個轉換維度中的 2 的冪次訊號長度。

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

  • s (Tuple[int], optional) – 轉換維度中的訊號大小。如果給定,每個維度 dim[i] 在計算實數 FFT 之前,會被補零或修剪至長度 s[i]。如果指定長度 -1,則不會在該維度進行補零。預設值:s = [input.size(d) for d in dim]

  • dim (Tuple[int], optional) – 要轉換的維度。預設值:最後兩個維度。

  • norm (str, optional) –

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

    • "forward" - 以 1/n 正規化

    • "backward" - 不進行正規化

    • "ortho" - 以 1/sqrt(n) 正規化 (使實數 FFT 成為正交的)

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

    預設值為 "backward" (不進行正規化)。

關鍵字參數

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

範例

>>> t = torch.rand(10, 10)
>>> rfft2 = torch.fft.rfft2(t)
>>> rfft2.size()
torch.Size([10, 6])

fft2() 的完整輸出相比,我們擁有高達 Nyquist 頻率的所有元素。

>>> fft2 = torch.fft.fft2(t)
>>> torch.testing.assert_close(fft2[..., :6], rfft2, check_stride=False)

離散傅立葉變換是可分離的,因此此處的 rfft2() 等同於 fft()rfft() 的組合

>>> two_ffts = torch.fft.fft(torch.fft.rfft(t, dim=1), dim=0)
>>> torch.testing.assert_close(rfft2, two_ffts, check_stride=False)

文件

Access comprehensive developer documentation for PyTorch

View Docs

Tutorials

Get in-depth tutorials for beginners and advanced developers

View Tutorials

Resources

Find development resources and get your questions answered

View Resources