torch.rfft用法详解
时间: 2023-09-29 11:06:15 浏览: 32
`torch.rfft` 是 PyTorch 中一个用于实现快速傅里叶变换(FFT)的函数。它可用于对实数或复数序列执行 FFT,并返回实数或复数频谱。下面是 `torch.rfft` 的用法详解:
```
torch.rfft(input, signal_ndim, normalized=False, onesided=True, output=None, inverse=False)
```
参数:
- `input`(Tensor):要进行 FFT 的输入张量。可以是实数或复数张量。如果是实数张量,则必须是实数输入张量的最后一维的奇数长度。如果是复数张量,则必须是复数输入张量的最后一维的偶数长度。
- `signal_ndim`(int):FFT 要在哪些维度上执行。通常为 1 或 2。
- `normalized`(bool):是否进行归一化。默认为 False。
- `onesided`(bool):是否只返回正频率部分。默认为 True。
- `output`(Tensor):可选参数,输出张量。如果不为 None,则必须具有与输入张量相同的形状。
- `inverse`(bool):是否执行逆 FFT。默认为 False。
返回值:
- `output`(Tensor):FFT 的结果。如果 `onesided` 为 True,则返回的张量的最后一维的长度是 `(input.size(-1)//2)+1`,否则长度是 `input.size(-1)`。
示例:
```python
import torch
# 1D FFT
x = torch.randn(5, 4)
y = torch.rfft(x, 1)
print(y.shape) # torch.Size([5, 3, 2])
# 2D FFT
x = torch.randn(5, 4, 3, 2)
y = torch.rfft(x, 2)
print(y.shape) # torch.Size([5, 3, 2, 2])
# Inverse FFT
x = torch.randn(5, 4, 3)
y = torch.rfft(x, 2)
z = torch.irfft(y, 2, signal_sizes=x.shape[-3:])
print(z.shape) # torch.Size([5, 4, 3])
```
相关推荐
















