finddelay

估计信号之间的延迟

描述

例子

d= finddelay (xy返回延迟的估计值d输入信号之间xy.延迟xy可以通过前置零引入。

例子

d= finddelay (xymaxlag使用maxlag以求得之间的估计延迟xy

例子

全部折叠

以下显示Y被耽搁了X由两个样本。

X = [1 2 3];Y = [0 0 1 2 3];D = finddelay (X, Y)
D = 2

这里有一个箱子Y先进的X由三个样品。

X = [0 0 0 1 2 3 0 0]';Y = [1 2 3 0]';D = finddelay (X, Y)
D = 3

下面是一个例子Y是与X但吵了。

X = [0 0 1 2 3 0];Y = [0.02 0.12 1.08 2.21 2.95 -0.09];D = finddelay (X, Y)
D = 0

如果Y是周期性的吗X,则返回可能的最小延迟。

X = [0 1 2 3];Y = [1 2 3 0 0 0 1 2 3 0 0];D = finddelay (X, Y)
D = 1

maxlag指定为标量(相同的最大窗口大小)。

X = [0 1 2];Y = [0 1 0 0;1 2 0 0;2 0 1 0;0 0 2 1];maxlag = 3;D = finddelay (X, Y, maxlag)
D =1×40 -1 1 1

指定XY同样大小的。finddelaycolumn-by-column工作。

X = [0 1 0 0;1 2 0 0;2 0 1 0;1 0 2 1;0 0 0 2];Y = [0 0 1 0;1 1 2 0;2 2 0 1;1 0 0 2;0 0 0 0]; D = finddelay(X,Y)
D =1×41 -2 -1

重复计算,但现在添加额外的一行零作为的第二行Y

Y = [0 0 1 0;0 0 0 0;1 1 2 0;2 2 0 1;1 0 0 2;0 0 0 0];D = finddelay (X, Y)
D =1×41 2 1 0

创建两个多通道信号,XY,使每个通道Y是不是每个频道都有一份延时相同的拷贝X

X = [1 3 2 0 0 0 0;0 0 0 0 1 3 2]';Y = [0 0 0 1 3 2;1 3 2 0 0 0]';

逐列计算延迟。设置每个通道的最大相关窗口大小为8。

Maxlag = [8 8];D = finddelay (X, Y, maxlag)
D =1×23个5

将第一个通道的相关窗口减小到3,第二个通道减小到5。

Maxlag = [3 5];D = finddelay (X, Y, maxlag)
D =1×23个5

将第一个通道的相关窗口大小增加到5,将第二个通道的相关窗口大小减少到3。

Maxlag = [5 3];D = finddelay (X, Y, maxlag)
D =1×23个3

输入参数

全部折叠

参考输入,指定为向量或矩阵。

输入信号,指定为向量或矩阵。

最大相关窗口大小,指定为整数标量或向量。如果任何元素maxlag为负数时,则用其绝对值代替。如果任何元素maxlag不是整数值,或者是复数,,或,然后finddelay返回一个错误。

输出参数

全部折叠

输入信号之间的延迟,返回为整数标量或向量。如果y延迟是关于x,然后d是正的。如果y是先进的关于x,然后d是负的。如果可能存在多个延迟,如周期信号,则返回绝对值最小的延迟。如果具有相同绝对值的正延迟和负延迟都是可能的,则返回正延迟。

如果x矩阵的大小是多少X——- - - - - -NXX> 1,NX> 1)和y矩阵的大小是多少Y——- - - - - -NYY> 1,NY> 1,NY> 1),返回行向量d估计每列之间的延迟x和对应的列y.使用这种用法时,的列数x必须等于的列数y(例如,NXNY).

提示

  • xy不必是彼此的精确延迟副本finddelay (xy通过互相关返回延迟的估计。然而,这个估计的延迟只有在延迟版本之间有足够的相关性时才有有用的意义xy

  • 估计延迟向量的计算,d,取决于xy,maxlag如下表所示。

    maxlag X Y D计算了……
    整数值标量 行或列向量或矩阵 行或列向量或矩阵 的列相互关联XY经过一系列的滞后maxlagmaxlag
    整值行或列向量 行向量或列向量的长度lX≥1 矩阵的大小Y——- - - - - -NYY> 1,NY> 1) Cross-correlatingX和列jY经过一系列的滞后maxlagj):maxlagj),j= 1:NY
    整值行或列向量 矩阵的大小X——- - - - - -NXX> 1,NX> 1) 行向量或列向量的长度lY≥1 Cross-correlating列jXY经过一系列的滞后maxlagj):maxlagj),j= 1:NX
    整值行或列向量 矩阵的大小X——- - - - - -NXX> 1,NX> 1) 矩阵的大小Y-由- - - - - -NYY> 1,NYNX> 1) Cross-correlating列jX和列jY经过一系列的滞后maxlagj):maxlagj),j= 1:NY

  • 如果你想处理行向量x的长度lX包括来自lX不同的通道,您需要附加一行或多行0x所以它以矩阵的形式出现。然后每一列x将被认为是一个渠道。

    例如,X = [1 1 1 1]被认为是一个包含四个样本的单一通道。将其视为四个不同的通道,每个通道包含一个样本,定义一个新的矩阵xm

    每一列的xm对应一个通道,每个通道都包含样本10

    Xm = [1 1 1 1;0 0 0 0];

算法

finddelay函数使用xcorr函数来确定在用户指定的所有可能滞后情况下每对信号之间的相互关系。然后计算每对信号之间的归一化互相关。估计延迟由归一化互相关具有最大绝对值的滞后的负值给出。

如果超过一个滞后导致互相关的绝对值最大,例如在周期信号的情况下,延迟被选为这种滞后的绝对值最小的负数。

信号对不一定是彼此的精确延迟副本。然而,只有在至少一对延迟信号之间有足够的相关性时,估计的延迟才有有用的意义。

扩展功能

C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。