展开角度以获得连续的相位。

11

假设我有一个类似于以下的阶段数组:

import numpy as np
import matplotlib.pyplot as plt
phase = np.linspace(0., 100., 1000) % np.pi
plt.plot(phase)
plt.show()
(with many discontinuities like this)

如何从中获取更“连续”的相位数组?

当然,我已经尝试过使用np.unwrap

plt.plot(np.unwrap(phase))
plt.plot(np.unwrap(phase),discont=0.1)

但它仍然完全相同:

我期望的是这样一个展开:

这里输入图片描述

3个回答

14

如果您想保持pi周期性的原始相位,应首先将其加倍,解包它,然后除以二:

plt.plot(np.unwrap(2 * phase) / 2)


7
愚蠢的问题:为什么需要将数值加倍或减半?这是否取决于“discont”解析后的值? - airdas

4

我的问题来自于我在实际代码中使用了一个二维数组 (n,1)(没有注意到),而不是长度为 n 的一维数组。然后就出现了参数 axis 的问题:

np.unwrap(phase, axis=0)

问题已经解决。

其他答案仍然有用,因为涉及到π的问题。


2

np.unwrap的文档中可以看到:

通过沿给定轴更改绝对跳跃大于discont的值为它们的2*pi补数,来取消弧度相位p

但是,您的向量中所有元素的2*pi补数都是它们本身的值,因为没有任何值是> 2*pi的。

请尝试以下操作:

phase = np.linspace(0., 20., 1000) % 2*np.pi

plt.figure()

plt.subplot(1, 2, 1)
plt.plot(phase)

plt.subplot(1, 2, 2)
plt.plot(np.unwrap(phase))

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接