假设我有一系列与此类似的阶段:
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)
但仍然完全相似:
我期望的是这样的展开:
答案 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))
答案 2 :(得分:0)
我的问题来自于这样一个事实,我在我的真实代码中有一个二维数组(n,1)
(没有注意到),而不是一个长度为n
的一维数组。然后是参数axis
:
np.unwrap(phase, axis=0)
解决了。
由于2 pi
与pi
问题,其他答案仍然有用。