torch.fft.rfft#
- torch.fft.rfft(input, n=None, dim=-1, norm=None, *, out=None) Tensor#
計算實值
input的一維傅立葉變換。實訊號的傅立葉變換是厄米對稱的,
X[i] = conj(X[-i]),因此輸出只包含奈奎斯頻率以下的正頻率。要計算完整的輸出,請使用fft()注意
支援 CUDA 上的 torch.half,GPU 架構 SM53 或更高版本。但是,它只支援每個變換維度中長度為 2 的冪的訊號。
- 引數
input (Tensor) – 實數輸入張量
n (int, optional) – 訊號長度。如果給出,輸入將在計算實傅立葉變換之前被零填充或修剪到此長度。
dim (int, optional) – 計算一維實傅立葉變換的維度。
norm (str, optional) –
歸一化模式。對於正向變換 (
rfft()),它們對應於"forward"- 歸一化因子為1/n"backward"- 無歸一化"ortho"- 歸一化因子為1/sqrt(n)(使FFT正交)
使用相同的歸一化模式呼叫反向變換 (
irfft()) 將在兩次變換之間應用1/n的整體歸一化。這對於使irfft()成為精確逆變換是必需的。預設值為
"backward"(無歸一化)。
- 關鍵字引數
out (Tensor, optional) – 輸出張量。
示例
>>> t = torch.arange(4) >>> t tensor([0, 1, 2, 3]) >>> torch.fft.rfft(t) tensor([ 6.+0.j, -2.+2.j, -2.+0.j])
與
fft()的完整輸出進行比較>>> torch.fft.fft(t) tensor([ 6.+0.j, -2.+2.j, -2.+0.j, -2.-2.j])
請注意,對稱元素
T[-1] == T[1].conj()被省略了。在奈奎斯頻率T[-2] == T[2]處,它是它自己的對稱對,因此必須始終是實數。