torch.polar 是 PyTorch 中的一个函数,用于将极坐标(幅度和相位)转换为复数形式。具体来说,它将给定的幅度(magnitude)和相位(angle)转换为对应的复数张量。

函数签名

torch.polar(abs, angle) → Tensor

参数

  • abs (Tensor): 幅度(magnitude)张量,表示复数的模(绝对值)。
  • angle (Tensor): 相位(angle)张量,表示复数的相位角(以弧度为单位)。

返回值

  • 返回一个复数张量,其元素由 absangle 计算得到。

数学公式

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$。

注意事项

  • absangle 的形状必须相同,或者可以广播到相同的形状。
  • abs 必须是非负的,否则会抛出错误。
  • angle 的单位是弧度。

应用场景

torch.polar 通常用于信号处理、傅里叶变换、复数运算等领域,特别是在需要将极坐标表示的复数转换为直角坐标表示时非常有用。