匹配时间相关(1D)信号的算法

oor*_*ort 11 algorithm statistics signals signal-processing

我想知道是否有人能指出我用于比较时间相关信号的算法/技术.理想情况下,这个假设算法将接收2个信号作为输入并返回一个数字,该数字将是信号之间的百分比相似性(0表示2个信号在统计上不相关,1表示它们是完美匹配).

当然,我意识到我的请求存在问题,即我不确定如何在比较这两个信号的情况下正确定义"相似性",所以如果有人也能指出我正确的方向(至于我应该查看/知道等等,我也很感激.

mtr*_*trw 14

互相关函数是一个经典的信号处理解决方案.如果您可以访问Matlab,请参阅XCORR功能.max(abs(xcorr(Signal1, Signal2, 'coeff')))会特别为你提供你正在寻找的东西以及Python中的等价物.

互相关假设您正在寻找的"相似性"是两个信号之间线性关系的度量.具有时间索引的实值有限长信号的定义n = 0..N-1是:

C[g] = sum{m = 0..N-1} (x1[m] * x2[g+m])
Run Code Online (Sandbox Code Playgroud)

g-N..N(在该范围之外)总和内的产品为0.

虽然你要求一个数字,但这个功能非常有趣.功能域g称为滞后域.

如果x1并且x2与时移相关,则互相关函数将在对应于该移位的滞后处具有其峰值.例如,如果你有x1 = sin[wn]x2 = sin[wn + phi],因此以相同的频率和不同的相位两个正弦波,互相关函数将在对应于相移的滞后具有其峰值.

如果x2是缩放版本x1,则互相关也将缩放.您可以通过除以相关系数将函数规范化为相关系数sqrt(sum(x1^2)*sum(x2^2)),并0..1通过取绝对值(Matlab的这一行具有这些操作)将其引入.

更一般地,下面是对互相关的好坏的总结.

互相关很好地用于确定一个信号是否与另一个信号线性相关,即如果所讨论的信号在
x2(t) = sum{n = 0..K-1}(A_n * x1(t + phi_n))
哪里x1(t)x2(t)是,A_n是缩放因子,并且phi_n是时移.这意味着:

  1. 如果一个信号是另一个信号的时移版本,(phi_n <> 0 for some n)则互相关函数将不为零.
  2. 如果一个信号是另一个信号的缩放版本,则(A_n <> 0 for some n)互相关函数将不为零.
  3. 如果一个信号是的组合缩放和时移其他的版本(两者A_nphi_n对于一些数n的非零)的互相关函数将是非零的.请注意,这也是线性滤波器的定义.

为了更具体,假设x1是一个宽带随机信号.我们x2=x1.现在,归一化的互相关函数在g = 0时恰好为1,在其他地方接近0.现在让我们x2成为(线性)过滤版本x1.互相关函数将近非零g=0.非零部分的宽度取决于滤波器的带宽.

对于特殊情况x1x2周期性,答案原始部分的相移信息适用.

如果两个信号不是线性相关的,那么互相关将无济于事.例如,不同频率的两个周期信号不是线性相关的.在不同时间也不是从宽带随机过程中提取的两个随机信号.两个信号的形状相似但时间索引不同 - 这就像不相等的基频情况.

在所有情况下,对互相关函数进行归一化并查看最大值将告诉您信号是否可能与线性相关 - 如果数字较低,如0.1以下,我会很自然地宣布它们不相关.高于此,我会更仔细地研究它,绘制标准化和非标准化的互相关函数并查看结构.周期性互相关意味着两个信号都是周期性的,并且周围明显更高的互相关函数g=0意味着一个信号是另一个信号的滤波版本.


Joh*_*uhy 0

我不知道信号处理,所以这是一个猜测..:

您的信号实际上是一个有序对的列表(x,y)x时间和y幅度在哪里?如果是这样,那么也许你可以扔掉时间坐标——例如:

Signal 1: [(x0,y0), (x1,y1), (x2,y2), (x3,y3), ...]
Signal 2: [(x0,z0), (x1,z1), (x2,z1), (x3,z3), ...]
Run Code Online (Sandbox Code Playgroud)

丢弃时间:

Signal 1: [y0, y1, y2, y3, ...]
Signal 2: [z0, z1, z2, z3, ...]
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过寻找相关性来相互比较振幅。也许你可以策划y反对z

Comparing: [(y0,z0), (y1,z1), (y2,z2), (y3,z3), ...]
Run Code Online (Sandbox Code Playgroud)

或者计算各种相关系数之一。