【问题标题】:Unwrap angle to have continuous phase展开角以获得连续相位
【发布时间】:2019-02-17 00:22:26
【问题描述】:

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

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)

但它保持完全相同:

我所期望的是这样的展开:

【问题讨论】:

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


    【解决方案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】:

      如果你想保持你的原始相位具有 pi 周期,你应该先把它加倍,解包,然后除以二:

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

      【讨论】:

      • 愚蠢的问题:为什么需要加倍和减半?它是否取决于“discont”的解析值?
      【解决方案3】:

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

      np.unwrap(phase, axis=0)
      

      解决了。

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

      【讨论】:

        猜你喜欢
        • 2019-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-22
        • 2021-06-08
        • 2023-03-24
        • 1970-01-01
        相关资源
        最近更新 更多