使用 python 插值测量的正弦波
Interpolating measured sine wave using python
我从 DSO 获得了 2 个采样正弦波作为测量值。 DSO 的采样率为 160 GSa/s,我的信号为 60 GHz。我需要找到两个正弦波之间的相位差。两者频率相同。然而,采样率不足以准确确定相位。有什么方法可以对测量信号进行插值得到更好的正弦波,然后计算相位差吗?
你可以fit to sine functions,但对于相位差(delta phi=2pi 频率delta t)检测和比较过零就足够了(分别是一个可能的常量偏移量),可以通过像
这样的插值从你的系列的一部分中找到
w=6.38 # some radian frequency
t = np.linspace(0, 0.5) # time interval containing ONE zero-crossing
delta_phi=0.1 # some phase difference
x = np.sin(w*t-delta_phi) # x(t)
f = interpolate.interp1d(x, t) # interpolate t(x), default is linear
delta_t = f(0) # zero-crossing time referred to t=0
delta_phi_detected= w*delta_t
您需要将信号的两个相邻过零相关联。
或者,您可以通过将两个信号相乘并随时间进行数值积分来获得平均值 T,它收敛于 (T/2)cos (delta_phi),如果两个信号都具有(或使)零平均值。
我从 DSO 获得了 2 个采样正弦波作为测量值。 DSO 的采样率为 160 GSa/s,我的信号为 60 GHz。我需要找到两个正弦波之间的相位差。两者频率相同。然而,采样率不足以准确确定相位。有什么方法可以对测量信号进行插值得到更好的正弦波,然后计算相位差吗?
你可以fit to sine functions,但对于相位差(delta phi=2pi 频率delta t)检测和比较过零就足够了(分别是一个可能的常量偏移量),可以通过像
这样的插值从你的系列的一部分中找到w=6.38 # some radian frequency
t = np.linspace(0, 0.5) # time interval containing ONE zero-crossing
delta_phi=0.1 # some phase difference
x = np.sin(w*t-delta_phi) # x(t)
f = interpolate.interp1d(x, t) # interpolate t(x), default is linear
delta_t = f(0) # zero-crossing time referred to t=0
delta_phi_detected= w*delta_t
您需要将信号的两个相邻过零相关联。
或者,您可以通过将两个信号相乘并随时间进行数值积分来获得平均值 T,它收敛于 (T/2)cos (delta_phi),如果两个信号都具有(或使)零平均值。