展开角具有连续相位

时间:2018-09-12 11:14:25

标签: python numpy signal-processing complex-numbers phase

假设我有一系列与此类似的阶段:

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

(有很多这样的间断点)

如何从中获取更多“连续”阶段的数组?

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

plt.plot(np.unwrap(phase))

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

但仍然完全相似:

我期望的是这样的展开:

enter image description here

3 个答案:

答案 0 :(得分:6)

如果要使原始相位保持pi周期性,则应首先将其翻倍,拆开包装,然后将其除以二:

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

答案 1 :(得分:1)

摘自np.unwrap的文档:

  

通过将绝对跳变更改为大于来解开弧度p   discont沿给定轴的2 * pi补码。

但是向量中所有元素的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

答案 2 :(得分:0)

我的问题来自于这样一个事实,我在我的真实代码中有一个二维数组(n,1)(没有注意到),而不是一个长度为n的一维数组。然后是参数axis

np.unwrap(phase, axis=0)

解决了。

由于2 pipi问题,其他答案仍然有用。