首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与numpy.unwrap相反

与numpy.unwrap相反
EN

Stack Overflow用户
提问于 2013-04-10 13:49:48
回答 4查看 33.5K关注 0票数 35

在Python中,有一个拆开函数:

打开弧度相位p通过改变绝对跳跃大于停止到他们的2*pi补体沿给定的轴。

现在,我想做相反的功能。我如何包装一个阶段数组?例如,如何在-π和π之间转换所有的角度来约束它们?

最明显的方法是做这样的事情:

代码语言:javascript
复制
for i, a in enumerate(phases):
    while a < pi:
        a += 2 * pi
    while a > pi:
        a -= 2 * pi
    phases[i] = a

但有更简单/更快的方法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-10 13:56:43

代码语言:javascript
复制
phases = (phases + np.pi) % (2 * np.pi) - np.pi
票数 53
EN

Stack Overflow用户

发布于 2015-03-24 16:11:57

代码语言:javascript
复制
import numpy as np
phases = np.arctan2(np.sin(phases), np.cos(phases))

这是因为sin(阶段)/cos(阶段) == tan(阶段)。利用逆切函数得到回相(模2π) .从数学上讲,逆正切函数是多值的,所以在编程语言中通常定义为在一个固定的区间内返回相位。

两个参数的arctangent函数,即np.arctan2(numerator, denominator),与常规的arctangent函数相同,只是它跟踪分子和分母的符号,因此能够返回相位模2π,而不是只能返回相位模π的常规np.arctan(numerator/denominator)函数。Numpy对arctan2函数的实现被定义为返回范围-π,+π中的阶段,这是OP请求的范围。

附加说明:此arctan2方法直接来自复杂表示,在数学上完全等同于:

代码语言:javascript
复制
phases = np.angle(np.exp(1j*phases))

这可能更直观。事实上,numpy的angle函数使用arctan2在幕后分离指数的虚分量和实分量,即正弦和余弦。

票数 12
EN

Stack Overflow用户

发布于 2015-08-28 08:03:00

这个答案与sega_sai的答案略有不同,即:

代码语言:javascript
复制
phases = ( phases + np.pi) % (2 * np.pi ) - np.pi

这个阶段映射到[ -pi,pi) ->,这意味着pi被映射到-pi

如下所示:

代码语言:javascript
复制
In [27]: phases = np.pi

In [28]: phases = ( phases + np.pi) % (2 * np.pi ) - np.pi

In [29]: print phases
-3.14159265359

这是完全合法的,但是如果您想要映射(-pi,pi),那么

乘以输入和输出的操作购买-1。就像这样:

代码语言:javascript
复制
phases =  (( -phases + np.pi) % (2.0 * np.pi ) - np.pi) * -1.0
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15927755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档