展开角度以具有连续相位
Unwrap angle to have continuous phase
假设我有一组与此类似的阶段:
import numpy as np
import matplotlib.pyplot as plt
phase = np.linspace(0., 100., 1000) % np.pi
plt.plot(phase)
plt.show()
(有很多这样的不连续性)
如何从中获取更多 "continuous" 个相位的数组?
当然,我已经尝试过 np.unwrap
:
plt.plot(np.unwrap(phase))
或
plt.plot(np.unwrap(phase),discont=0.1)
但它保持完全相似:
我期望的是像这样展开:
来自 np.unwrap
的文档:
Unwrap radian phase p
by changing absolute jumps greater than
discont
to their 2*pi complement along the given axis.
但是向量中所有元素的 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))
如果你想保持你的原始相位具有 pi 周期性,你应该先将它加倍,展开它,然后将它除以二:
plt.plot(np.unwrap(2 * phase) / 2)
我的问题来自于我的真实代码中有一个二维数组 (n,1)
(没有注意到),而不是长度为 n
的一维数组。然后参数axis
:
np.unwrap(phase, axis=0)
解决了。
由于 2 pi
与 pi
问题,其他答案仍然有用。
假设我有一组与此类似的阶段:
import numpy as np
import matplotlib.pyplot as plt
phase = np.linspace(0., 100., 1000) % np.pi
plt.plot(phase)
plt.show()
(有很多这样的不连续性)
如何从中获取更多 "continuous" 个相位的数组?
当然,我已经尝试过 np.unwrap
:
plt.plot(np.unwrap(phase))
或
plt.plot(np.unwrap(phase),discont=0.1)
但它保持完全相似:
我期望的是像这样展开:
来自 np.unwrap
的文档:
Unwrap radian phase
p
by changing absolute jumps greater thandiscont
to their 2*pi complement along the given axis.
但是向量中所有元素的 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))
如果你想保持你的原始相位具有 pi 周期性,你应该先将它加倍,展开它,然后将它除以二:
plt.plot(np.unwrap(2 * phase) / 2)
我的问题来自于我的真实代码中有一个二维数组 (n,1)
(没有注意到),而不是长度为 n
的一维数组。然后参数axis
:
np.unwrap(phase, axis=0)
解决了。
由于 2 pi
与 pi
问题,其他答案仍然有用。