當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python PyTorch rfft2用法及代碼示例


本文簡要介紹python語言中 torch.fft.rfft2 的用法。

用法:

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

參數

  • input(Tensor) -輸入張量

  • s(元組[int],可選的) -轉換維度中的信號大小。如果給定,每個維度 dim[i] 將在計算實際 FFT 之前補零或修剪到長度 s[i]。如果指定了長度-1,則在該維度中不進行填充。默認值:s = [input.size(d) for d in dim]

  • dim(元組[int],可選的) -要轉換的維度。默認值:最後兩個維度。

  • norm(str,可選的) -

    標準化模式。對於正向變換(rfft2()),這些對應於:

    • "forward" - 通過 1/n 標準化

    • "backward" - 沒有標準化

    • "ortho" - 通過1/sqrt(n) 歸一化(使真正的 FFT 正交化)

    其中 n = prod(s) 是邏輯 FFT 大小。使用相同的歸一化模式調用反向變換 ( irfft2() ) 將在兩個變換之間應用 1/n 的整體歸一化。這是使 irfft2() 完全相反所必需的。

    默認為"backward"(無規範化)。

關鍵字參數

out(Tensor,可選的) -輸出張量。

計算實數 input 的二維離散傅裏葉變換。等效於 rfftn() ,但默認情況下僅對最後兩個維度進行 FFT。

真實信號的 FFT 是埃爾米特對稱的 X[i, j] = conj(X[-i, -j]) ,因此完整的 fft2() 輸出包含冗餘信息。 rfft2() 相反,忽略最後一個維度中的負頻率。

示例

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

fft2() 的完整輸出相比,我們的所有元素都達到了奈奎斯特頻率。

>>> 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)

相關用法


注:本文由純淨天空篩選整理自pytorch.org大神的英文原創作品 torch.fft.rfft2。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。