返回顶部
首页 > 资讯 > 后端开发 > Python >torch.atan2函数详细解答
  • 290
分享到

torch.atan2函数详细解答

numpypython开发语言 2023-09-03 12:09:09 290人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

先看看arctan arctan实际上是用来计算点(x,y)组成的向量,与x轴的弧度的,是tan的反函数,推导如下,α为弧度 ​ ​  y=arctan(x)其图像如下 y为弧度,x为任意值,这里不是指上面的坐标x,y 但这种弧度计算方

先看看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 torchimport numpy as npfrom math import pix= 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)

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的反函数,而不是倒数的关系

来源地址:https://blog.csdn.net/zxyOVO/article/details/130086322

--结束END--

本文标题: torch.atan2函数详细解答

本文链接: https://lsjlt.com/news/392209.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • torch.atan2函数详细解答
    先看看arctan arctan实际上是用来计算点(x,y)组成的向量,与x轴的弧度的,是tan的反函数,推导如下,α为弧度 ​ ​  y=arctan(x)其图像如下 y为弧度,x为任意值,这里不是指上面的坐标x,y 但这种弧度计算方...
    99+
    2023-09-03
    numpy python 开发语言
  • pcre函数详细解析
    PCRE是一个NFA正则引擎,不然不能提供完全与Perl一致的正则语法功能。但它同时也实现了DFA,只是满足数学意义上的正则。 1. pcre_compile 原型:#include...
    99+
    2022-11-15
    pcre
  • oracle常用函数详解(详细)
    Oracle SQL 提供了用于执行特定操作的专用函数。这些函数大大增强了 SQL 语言的功能。函数可以接受零个或者多个输入参数,并返回一个输出结果。 oracle 数据库中主要使用两种类型的函数:   单行函数:对每一个函数应用在表的记录...
    99+
    2017-02-14
    oracle常用函数详解(详细) 数据库入门 数据库基础教程 数据库 mysql
  • 攻防世界PHP2详细解答
    攻防世界PHP2 一、 1.进入环境 看到一句话“Can you anthenticate to this website”意思为:你能认证到这个网站吗? ...
    99+
    2023-08-31
    php Powered by 金山文档
  • CreateFile函数详解(确实很详细)
    CreateFile函数是Windows操作系统中用于创建或打开一个文件或设备的函数。下面是对CreateFile函数的详细解释:函...
    99+
    2023-09-15
    CreateFile
  • Python内置函数详细解析
    目录1.abs2.all3.any4.callable5.dir6.id7.locals 和 globals8.hash9.sum10.getattr、setattr、delattr...
    99+
    2024-04-02
  • python中Path函数讲解【详细】
    文章目录 1、Path函数的基本功能2、常见用法2.1 表示路径2.2 路径的拼接和分解2.3 获取路径 1、Path函数的基本功能 使用pathlib模块来处理文件和文...
    99+
    2023-09-01
    深度学习 图像处理 python
  • Vuerender函数使用详细讲解
    目录Dom什么是render函数render函数的返回值(VNode)template与render简单的render函数什么时候使用RenderDom 在浏览器中通过js来操作DO...
    99+
    2023-01-17
    Vue render函数 Vue render
  • mysql日期函数TO_DAYS()函数的详细讲解
    目录背景:TO_DAYS()函数总结背景: 今天在项目里看到的sqlserver的days()函数,计算从0年开始到给定时间的天数,现在要修改为mysql语法,有个很奇怪的现象奥,同样都是今天2021-11-30,sql...
    99+
    2024-04-02
  • C++ 虚拟函数详解:解答多态机制之谜
    c++++虚拟函数是实现多态性的关键,它允许派生类覆盖父类的行为:声明为虚函数,并在派生类中出现。调用时,编译器根据对象类型动态解析正确的函数版本。纯虚函数强制派生类提供自己的实现,以实...
    99+
    2024-04-29
    c++ 多态
  • C++超详细讲解函数对象
    目录一、客户需求二、存在的问题三、解决方案四、函数对象五、小结一、客户需求 编写一个函数 函数可以获得斐波那契数列每项的值每调用一次返回一个值函数可根据需要重复使用 下面来看第一个...
    99+
    2024-04-02
  • C++超详细讲解函数重载
    目录1 函数重载的定义2 构成函数重载的条件3 编译器调用重载函数的准则4 函数重载的注意事项4.1 避开重载带有指定默认值参数的函数4.2 注意函数重载遇上函数指针4.3 C++编...
    99+
    2024-04-02
  • C++超详细讲解析构函数
    目录特性析构函数处理自定义类型编译器生成的默认析构函数特性 析构函数是特殊的成员函数 特征如下: 析构函数名是~类名;无参数无返回值;一个类有且只有一个析构函数;对象声明周期结束,编...
    99+
    2024-04-02
  • C++超详细讲解构造函数
    目录类的6个默认成员函数构造函数特性编译器生成的默认构造函数成员变量的命名风格类的6个默认成员函数 如果我们写了一个类,这个类我们只写了成员变量没有定义成员函数,那么这个类中就没有函...
    99+
    2024-04-02
  • Pandas绘图函数超详细讲解
    目录简介条形图折线图箱线图直方图饼图散点图和六边形分箱图简介 method绘图类别method绘图类别'line'折线图[默认使用]'area'堆叠面...
    99+
    2022-12-20
    Pandas绘图函数 Python绘图函数
  • win7硬盘安装步骤的详细解答
    硬盘是计算机最主要的存储媒介,而且绝大多数硬盘都是固定硬盘。很多朋友想要硬盘安装系统,可是不知如何安装,对此,我给大家整理了硬盘安装win7系统的详细步骤,一起来看看吧。硬盘安装win7系统步骤如下1、使用解压工具把win7系统解压到C盘之...
    99+
    2023-07-17
  • windows7系统还原的详细步骤解答
      相信还有许多用户还在使用windows7系统,不过一个系统使用久了可能会出现卡顿等其他现象。有部分用户就会选择系统还原的方法,这个方法可以让系统回的最初的样子,下面我们就一起来看看windows7系统还原的操作步骤,大家快来学习一下吧。...
    99+
    2023-07-16
  • 详细理解函C语言的函数栈帧
    目录一、函数栈帧的创建1.寄存器2.函数栈帧3.函数中调用函数二、函数栈帧的销毁总结一、函数栈帧的创建 1.寄存器 一般来说,计算机中的寄存器有六种 分别是:eax, ebx, e...
    99+
    2024-04-02
  • JavaScala偏函数与偏应用函数超详细讲解
    目录偏函数isDefinedAtorElseandThenapplyOrElse偏应用函数偏函数 偏函数(Partial Function),是一个数学概念它不是"函数&q...
    99+
    2023-05-14
    Java Scala偏函数 Java Scala偏应用函数
  • JavaScript函数扩展与箭头函数超详细讲解
    目录函数参数扩展rest参数箭头函数箭头函数的使用规范箭头函数的嵌套箭头函数案例函数参数扩展 ES6 允许给函数参数赋初始值: 形参初始值 具有默认值的参数,一般位置要靠后(潜规则)...
    99+
    2022-11-13
    JavaScript函数扩展 JavaScript箭头函数
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作