快捷方式

torch.fft.hfft

torch.fft.hfft(input, n=None, dim=-1, norm=None, *, out=None) Tensor

計算 Hermitian 對稱 input 訊號的一維離散傅立葉轉換。

注意

hfft()/ihfft() 類似於 rfft()/irfft()。實數 FFT 期望時域中的實數訊號,並在頻域中產生 Hermitian 對稱性。 Hermitian FFT 則相反;在時域中具有 Hermitian 對稱性,在頻域中具有實數值。因此,需要特別注意長度參數 n,就像使用 irfft() 一樣。

注意

因為訊號在時域中是 Hermitian 的,所以結果在頻域中將會是實數。請注意,某些輸入頻率必須是實數值才能滿足 Hermitian 屬性。 在這些情況下,虛數分量將被忽略。 例如,input[0] 中的任何虛數分量都會導致一個或多個複數頻率項,這些項無法在實數輸出中表示,因此將始終被忽略。

注意

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

注意

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

參數
  • input (Tensor) – 表示半 Hermitian 訊號的輸入張量

  • n (int, optional) – 輸出訊號長度。 這決定了實數輸出的長度。 如果給定,則在計算 Hermitian FFT 之前,輸入將被零填充或修剪到此長度。 預設為偶數輸出:n=2*(input.size(dim) - 1)

  • dim (int, optional) – 沿其取得一維 Hermitian FFT 的維度。

  • norm (str, optional) –

    標準化模式。 對於正向轉換 (hfft()),這些對應於

    • "forward" - 按 1/n 進行標準化

    • "backward" - 無標準化

    • "ortho" - 按 1/sqrt(n) 進行標準化 (使 Hermitian FFT 正交)

    使用相同的標準化模式調用反向轉換 (ihfft()) 將在兩個轉換之間應用 1/n 的整體標準化。 這是使 ihfft() 成為精確反向轉換所必需的。

    預設值為 "backward" (無標準化)。

關鍵字參數

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

範例

取得實數值頻率訊號並將其帶入時域會產生 Hermitian 對稱輸出

>>> t = torch.linspace(0, 1, 5)
>>> t
tensor([0.0000, 0.2500, 0.5000, 0.7500, 1.0000])
>>> T = torch.fft.ifft(t)
>>> T
tensor([ 0.5000-0.0000j, -0.1250-0.1720j, -0.1250-0.0406j, -0.1250+0.0406j,
        -0.1250+0.1720j])

請注意,T[1] == T[-1].conj()T[2] == T[-2].conj() 是多餘的。 因此,我們可以在不考慮負頻率的情況下計算正向轉換

>>> torch.fft.hfft(T[:3], n=5)
tensor([0.0000, 0.2500, 0.5000, 0.7500, 1.0000])

irfft() 類似,必須給定輸出長度才能恢復偶數長度的輸出

>>> torch.fft.hfft(T[:3])
tensor([0.1250, 0.2809, 0.6250, 0.9691])

文件

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

檢視文件

教學課程

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

檢視教學課程

資源

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

檢視資源