我需要找到两个信号之间的时间延迟。我想MSE是最好的方法。如何找到那个 MSE?我正在编写代码,我可以访问一个信号的自相关矩阵以及两个信号的互相关以及信号的功率。这些信息足以计算 MSE 吗?关于如何做到这一点的任何提示?
谢谢。
我需要找到两个信号之间的时间延迟。我想MSE是最好的方法。如何找到那个 MSE?我正在编写代码,我可以访问一个信号的自相关矩阵以及两个信号的互相关以及信号的功率。这些信息足以计算 MSE 吗?关于如何做到这一点的任何提示?
谢谢。
只要两个信号只是彼此的延迟版本,延迟就简单地由出现最大互相关的时间点给出。
如果信号不相关,那么这个问题就毫无意义。
棘手的部分是当两个信号部分相关或者是相同原始信号的过滤版本时。在这种情况下,您首先需要定义“延迟”的确切含义。解决此问题的一种可能方法是将信号相互时移,将它们相减并求平方和。导致差异中能量最小的偏移将被视为延迟。像
希尔玛的回答是完全正确的,尽管在某种意义上是不完整的。
对于任何两个具有相同能量的有限能量信号,衡量它们相似程度的一个标准是差分信号中的能量,其能量由下式给出
取决于是否考虑离散时间或连续时间信号。对于周期信号,求和或积分应在公共周期内进行。
但请注意,在展开和注意到前两项,在求和或积分时,将只给我们两个信号的能量,因此相似性的标准本质上是两个信号的内积;内积越大,两个信号越相似。
一个更普遍的问题不是和有多相似 ,而是,
$y$ 的哪个延迟版本(或时间提前版本)与 相似?
我们可以构建相似性度量
互相关 函数或达到其最大值的延迟(或)是延迟其中(或(或 )最相似。
简而言之,OP 在尝试使用均方误差作为确定信号相似性的标准方面是完全正确的。然而,随着想法的进一步发展,我们得出了 Hilmar 提供的解决方案:查看互相关函数的峰值
您可以使用两个信号之间的互相关来找出两个信号之间的关系,
import numpy as np
correlation = np.correlate(signal_1 ,signal_2 ,mode="same")
delay= np.argmax(correlation)-int(len(correlation)/2)
有关更多详细信息,请查看numpy库以获取有关功能的详细说明correlate和argmax.