torch.atan2函数详细解答

article/2025/6/6 3:20:37

先看看arctan

arctan实际上是用来计算点(x,y)组成的向量,与x轴的弧度的,是tan的反函数,推导如下,α为弧度

y/x=\tan \alpha

\mathrm{arc}\tan \left( y/x \right) =\alpha

 y=arctan(x)其图像如下 y为弧度,x为任意值,这里不是指上面的坐标x,y

但这种弧度计算方式是有缺陷的,比如

我想区分如下图A、B两点的弧度,如果AB弧度都是

\alpha =\mathrm{arc}\tan \left( -3/4 \right) =\mathrm{arc}\tan \left( 3/-4 \right)

那么就无法区分开了,也就是虽然x,y有确定的唯一弧度,但同一个弧度会有两个刚好相反的向量指向,比如图中从原点到A和B的两条向量,不能唯一表示一个方向,这也就是atan2解决的东西 

atan2

作用:计算一组点计算点(x,y)组成的向量的弧度,该弧度是与x轴正方向的弧度(这是与传统arctan的唯一区别)

 torch.atan2(input, other, *, out=None) → Tensor

  • input (Tensor) – the first input tensor 是分子,也就是点y的坐标集合

  • other (Tensor) – the second input tensor 是分母,也就是点x的坐标集合,otrher这里填入什么轴的值,就以什么轴的为正方向的夹角的弧度,在二维时other=x,就是该点与x轴正方向的弧度,在三维时other=z,就是该点与z轴正方向的弧度

在三角函数中,atan2是反正切函数的一个变种,有两个变数,主要是提供给计算机编程语言一个简便的弧度计算方式,其定义为:

此时的atan2函数的图像如下,y为弧度,x为任意值

此时指定弧度有了唯一的象限,同一个弧度不会再出现有两条相反方向向量的情况了。

 此时A点的弧度=B的弧度+π,二者的弧度不再相等了,此时弧度相同,因为计算的是与x轴正半轴的弧度,也就是此时确定弧度可以唯一确定一个向量。

 torch.atan2的用法和结果验证

import torch
import numpy as np
from math import pi
x= torch.tensor([1,2,1])
y= torch.tensor([0,pi,2])result=torch.atan2(y,x)
print(result)print(np.arctan(pi/2))

tensor([0.0000, 1.0039, 1.1071])
1.0038848218538872

y为input,x为other,arctan(y[0]/x[0]),0=arctan(0/1)

1.0039=arctan(pi/2)

 torch.atan2对于三维空间的使用

在sphere former中,作者使用了如下的网络结构,将xyz转换为(θ,β,radius)的形式,该形式可以唯一地表示一个点。

def cart2sphere(xyz):'''将xyz坐标转化为弧度坐标[theta, beta, r]Args:xyz:Returns:[theta, beta, r],y与x轴的夹角theta,xy平面上的投影与'''x, y, z = xyz[:, 0], xyz[:, 1], xyz[:, 2]#計算該點於x軸正方向的弧度theta = (torch.atan2(y, x) + np.pi) * 180 / np.pi #將弧度值都變爲正值,最後變成角度值,theta 0-360。# 計算該點於z軸正方向的弧度beta = torch.atan2(torch.sqrt(x**2 + y**2), z) * 180 / np.pi #轉換結果爲角度,第一项永远为正数,也就是y大于0,因此结果y永远为正数 0~180,r = torch.sqrt(x**2 + y**2 + z**2)#r是半徑return torch.stack([theta, beta, r], -1) 

为什么该形式可以唯一表示一个点呢?

首先,(x,y,z)可以唯一确定1组(θ,β,radius),通过上述代码,(x,y,z)可以得到唯一的一组确定的解。

我们进行分析是否有可能一个(θ,β,radius)可以映射到两个讲过0点的向量(x,y,z)上,

点(x,y,z)可以看做是三个向量x,y,z的合成

theta = (torch.atan2(y, x) + np.pi) * 180 / np.pi

 torch.atan2(y, x)就是上面提到的,一个θ有确定的一个x,y向量。

beta = torch.atan2(torch.sqrt(x**2 + y**2), z) 

该行代码可以计算该点torch.sqrt(x**2 + y**2)(永远在第一、二象限)和z组成的向量与z轴正方向的弧度,因为z在第二个参数位置上,所以是以z轴为正方向。

 也就是x轴现在变为torch.sqrt(x**2 + y**2)/z,y轴变为β,torch.sqrt(x**2 + y**2)永远大于0(图上就是y>0),也就是只有其大于0的部分,对应了这两条曲线,也就是β确定,torch.sqrt(x**2 + y**2)/z唯一确定,如下图,由于torch.sqrt(x**2 + y**2)恒大于0,并不会出现两条完全相反的向量,因此不会出现1个弧度对应两个向量的问题。

 再在该平面上画半径,只有唯一的交点。

也就是θ确定x、y平面上的方向,β确定z,(x+y)平面的方向,半径确定该x,y,z方向上的唯一点。

附:角度与弧度的关系

弧度角度转换

2*pi=2*pi*180°/pi=2*180°=360°

arctan是tan的反函数,而不是倒数的关系


http://chatgpt.dhexx.cn/article/typORLaY.shtml

相关文章

atan2相关知识汇总

1.atan2的含义 C 语言里 double atan2(double y,double x) 返回的是原点至点(x,y)的方位角,即与 x 轴的夹角。返回值的单位为弧度,取值范围为(-π, π]。结果为正表示从 X 轴逆时针旋转的角度,结果为负表示从 X 轴顺时针旋转的角…

HPC超算初识思维导图

HPC是高性能计算(High Performance Computing)机群的简称。指能够执行一般个人电脑无法处理的大资料量与高速运算的电脑,其基本组成组件与个人电脑的概念无太大差异,但规格与性能则强大许多。现有的超级计算机运算速度大都可以达到每秒一兆(万…

超级计算机中心建设方案,超算中心建设框架

数据中心硬件建设框架 1.主要内容 华浩超算数据中心主要由基础硬件设施、超算影像处理系统及业务协同管理应用平台和安全保密体系组成。每个部分相互联系、相互依赖。目前具体建设内容如下: 内容一:基础硬件设施建设 1:机房及服务器集群建设 …

HPC超算网络资源

HPC超算资源 资源 Blue Water 超算William D. GroppOSU benchmarksTuning MPI Applications for Peak Performance W.D.Gropp苏黎世联邦理工 Scalable Parallel Computing LaboratoryNERSC超算文档资料HPC Wikipipeline-parallelism 课程 Design of Parallel and High-Perfor…

word文档中英文行间距不一样怎么解决

方法/步骤1: 在编辑文档时发现在有英文的段落中,行间距与没有要英文的不同,如图: 方法/步骤2: 该如何解决呢?首先鼠标选中有英文的段落,或者CTRLA全选: 方法/步骤3: 然后选中功能选项卡的开始选项卡&…

word文档中设置的行距一样但实际显示的不一样

最近发现了一个很奇怪的问题,思考了好久好久,找不到原因,果然还是对于office不够了解呀。 问题缘由 word2013中,同样一段文字,字体字号行间距都设置了相同的,但是为什么看起来行间距好像不一样&#xff1…

【word】复制到word的文字不能调整行间距(行间距过大)

问题: 复制到word的文字不能调整行间距(行间距过大) 原因: 行距和文档网格冲突了。行距是为了控制行距而存在的,文档网格是为了控制每页的行数而存在的。 解决方法是:在“段落”设置里把“对齐到文档网格“…

word行中公式和文字对不齐解决办法

1、段落——中文版式——文本对齐方式(居中和自动都试试)(大部分都能解决) 优点:大批量解决对不齐文本 2、双击对不齐的公式打开mathtype——格式(M)——内联公式(I)选中…

docx行间距怎么设置_word怎么调整行间距的两种方法

我们在使用word时,由于各种原因我们需要设置行间距,可是word行间距怎么调?word行距怎么设置呢?那么下面就由学习啦小编给大家分享下word调整行间距的技巧,希望能帮助到您。 word调整行间距方法一: 步骤一:首先打开你…

Mathtype与word的格式问题

插入mathtype公式后,word的行间距变大问题。 插入公式后,行间距变大 解决方法: 第一步:在“页面设置” 页面设置的位置 第二步:“行间距“。选择自己文档的行间距。我这里设置的是20磅。 第三步:打开“段落…

css解决文本间距不一样的问题

不知道大家有没有遇到跟小编一样的问题,获取文本之后,文本间距居然出现大小间距,类似下面这种 excuse me??什么鬼,明明什么样式都没有给,间距那么大是什么情况??抓狂&am…

WORD、WPS中插入公式后行距变大怎么办

我们在word中使用公式编辑器编辑后公式后,发现行距变大了怎么调整啦,这里总结了两个方法,能够解决行距不一致的问题,可以在行距没有严格要求的情况下使用。 可以看出,在插入公式的行的间距变大,怎么解决啦…

word插入MathType公式行距变大调整办法

背景:当使用word写文章时,不可避免地需要在文中插入公式,我这里使用的工具是MathType。 问题:但插入段落内公式时,行间距变大,会变得和其他地方不一样,非常的不美观,如下图所示。如何…

word 文档标题样式相同、行距效果不同的解决办法

先看下图示例,两个标题均采用了标题1的样式(段前、段后0.5行,单倍行距),但展现出的效果有很大差异。 修改办法:将鼠标放置在需要修改的标题页,菜单栏点击【布局】 --->点击【页面设置】右下角…

解决word中公式插入后行间距变大,和文字不统一的问题

如果你正在使用Mathtype编辑公式,插入公式后可能得到这样的效果: 插入公式的地方行间距明显变大,如果你按照其他博客的方法,在段落中取消勾选“如果定义了文档网格,则对齐到网格” 那么得到的效果是这样的&#xff1…

word-解决复制相同的word内容,显示行间距差别大的原因

有时候我们参考别人格式写文章的时候,明明是保留格式直接复制过来的,结果和原来是word的页数不一样,这是因为我们,定义保留了网络文档。 那怎么解决呢 只要复制过来把这个钩去掉即可 当然你要是想修改,直接在页面布局…

【Word学习笔记】排版——行内公式间距不一致调整方法

目录 前言问题描述解决办法取消对齐网线线设置固定行间距 需要注意的点——公式显示不完整解决途径 总结 前言 这是本人在使用Word过程中的一些笔记,可能许多不足之处,欢迎批评指正。 问题描述 当我们用公式编辑器(比如mathtype、Axmath)在段落中输入行…