找出两个(非谐波)波之间的相位差
|
我有两个数据集,列出了时间t处两个神经网络组件的平均电压输出,如下所示:
A = [-80.0, -80.0, -80.0, -80.0, -80.0, -80.0, -79.58, -79.55, -79.08, -78.95, -78.77, -78.45,-77.75, -77.18, -77.08, -77.18, -77.16, -76.6, -76.34, -76.35]
B = [-80.0, -80.0, -80.0, -80.0, -80.0, -80.0, -78.74, -78.65, -78.08, -77.75, -77.31, -76.55, -75.55, -75.18, -75.34, -75.32, -75.43, -74.94, -74.7, -74.68]
当两个神经组件在一定程度上“同相”时,这意味着它们是相互关联的。我想做的是计算A和B之间的相位差,最好是在整个仿真过程中。由于两个程序集不可能完全同相,因此我想将该相位差与某个阈值进行比较。
这些是非谐波振荡器,我不知道它们的功能,只有这些值,所以我不知道如何确定相位或各自的相位差。
我正在使用numpy和scipy(两个程序集是numpy数组)在Python中进行此项目。
任何建议将不胜感激!
编辑:添加图
程序集1的示例数据文件
程序集2的示例数据文件
这是两个数据集的外观图:
没有找到相关结果
已邀请:
2 个回复
惜堡沁戚
互相关中的峰值位置将是相位差的估计值。 编辑3:现在更新,我已经查看了真实的数据文件。您发现相移为零有两个原因。首先,两个时间序列之间的相移实际上为零。如果在matplotlib图上水平放大,则可以清楚地看到这一点。其次,重要的是要首先对数据进行正则化(最重要的是,减去均值),否则在阵列末端的零填充效应会使互相关中的实际信号陷入沼泽。在下面的示例中,通过添加人为偏移并检查是否正确恢复,来验证是否找到了“ true”峰值。
编辑:这是一个如何处理假数据的示例。 编辑2:添加了示例图。
因此,即使对于非常嘈杂的数据和非谐波波,它也能很好地工作。
春驹晴陪