torch.polar
是 PyTorch 中的一个函数,用于将极坐标(幅度和相位)转换为复数形式。具体来说,它将给定的幅度(magnitude)和相位(angle)转换为对应的复数张量。
函数签名
torch.polar(abs, angle) → Tensor
参数
- abs (Tensor): 幅度(magnitude)张量,表示复数的模(绝对值)。
- angle (Tensor): 相位(angle)张量,表示复数的相位角(以弧度为单位)。
返回值
- 返回一个复数张量,其元素由
abs
和angle
计算得到。
数学公式
torch.polar
的计算公式如下:
$$ \text{output} = \text{abs} \cdot e^{i \cdot \text{angle}} $$
其中:
- $ \text{abs} $ 是幅度(模)。
- $ \text{angle} $ 是相位角(以弧度为单位)。
- $ e^{i \cdot \text{angle}} $ 是欧拉公式,表示复数的相位部分。
示例
import torch
# 定义幅度和相位
abs = torch.tensor([1.0, 2.0, 3.0])
angle = torch.tensor([0.0, torch.pi / 2, torch.pi])
# 使用 torch.polar 转换为复数
complex_tensor = torch.polar(abs, angle)
print(complex_tensor)
输出
tensor([ 1.0000+0.0000j, 0.0000+2.0000j, -3.0000+0.0000j])
解释
- 第一个元素的幅度为 1.0,相位为 0.0,因此对应的复数为 $1.0 + 0.0j$。
- 第二个元素的幅度为 2.0,相位为 $\pi/2$,因此对应的复数为 $0.0 + 2.0j$。
- 第三个元素的幅度为 3.0,相位为 $\pi$,因此对应的复数为 $-3.0 + 0.0j$。
注意事项
abs
和angle
的形状必须相同,或者可以广播到相同的形状。abs
必须是非负的,否则会抛出错误。angle
的单位是弧度。
应用场景
torch.polar
通常用于信号处理、傅里叶变换、复数运算等领域,特别是在需要将极坐标表示的复数转换为直角坐标表示时非常有用。