在前几篇文章中,我们介绍了可以利用无线信号的相位差来测距,为了弄清楚这个过程,我们介绍了信号可以使用IQ数据来表示,介绍了相位差的基本概念以及存在问题,最后引入了多径信道中连续波(CW)相位的测距。而这些基本概念应用于FMCW雷达测距以及低功耗蓝牙相位测距原理中。
本文中 先做一个简单的总结,而后使用一段Python代码来直观计算相位差。
简单推导过程
相同频率,不同相位时域信号如下表示:
使用采样信号采样:
换成采样点来表达:
根据Hilbert变换,任何一个时域信号,可以拓展到复平面上。相位差计算关系如下图所示:
对比相位差表示形式:
e−j(ϕ2[n]−ϕ1[n])就表示原始信号的相位差。
测量相位差的方法有过零相位检测法、相关函数法(correlation function)和傅里叶变换法,详细可以查阅相关资料。
演示
在下面代码中,首先生成两个频率为1MHz的正弦波信号。其中一个信号的相位比另一个信号晚了42度。对时域信号进行采样,生成时间序列,并利用时间序列生成了两个正弦波信号。
最后,我们使用关函数计算了信号的互相关(cross correlation),找到了互相关的峰值对应的滞后时间。通过将滞后时间转换为角度,我们得到了信号的相位差。
信号如下:
结果输出:
phase estimate (radians): 0.7539822368615502 (degrees): 43.19999999999999
python代码示例如下:
注:如有侵权,请告删之。