如何准确计算两个时间序列随时间变化的相位滞后
随时间变化的时间序列相位滞后测量问题
我的数据集包含两个采样频率为1次/分钟的时间序列,绘图可见二者存在相位滞后,但我不确定如何基于时间维度准确测量随时间变化的相位滞后。
数据形态
两个时间序列的原始趋势图,可见二者存在明显的相位偏移特征。
现有计算尝试
互相关法测量相位滞后
首次尝试
直接对两个时间序列进行互相关计算,代码如下:
d['h_ven']=series1 d['h_tid']=series2 corr = signal.correlate(d['h_ven'], d['h_tid']) lags = signal.correlation_lags(len(d['h_tid']), len(d['h_ven'])) corr /= np.max(corr) ax1.plot(lags, corr)
第二种方法
先尝试通过Savitzky-Golay滤波对序列进行平滑处理,代码如下:
#inte = d['h_ven'].interpolate(method='spline', order=5) #df = pd.DataFrame(dict(x=d['h_ven'])) #x_f = df[["x"]].apply(savgol_filter, window_length=31, polyorder=2) # other approach res1 = savgol_filter(d['h_ven'], 31, 3) res2 = savgol_filter(d['h_tid'], 31, 3)
之后使用相同的互相关脚本重新计算,但对得到的互相关结果(峰值位置及趋势)存在疑问——该结果图显示互相关曲线的峰值不够清晰,无法直接对应准确的相位滞后值。
预期目标
我期望得到随时间变化的相位延迟,单位为度或弧度(范围-360360或-2π+2π),预期输出为一条随时间轴变化的相位曲线:横轴为时间,纵轴为波动的相位值。
希望有人能建议我如何进一步改进或修正计算方法。
内容的提问来源于stack exchange,提问作者Adnan
相关产品推荐
相关产品推荐

