主要内容

finddelay

估计信号之间的延迟时间(s)

描述

例子

d= finddelay (x,y)返回一个估计的延迟d输入信号之间xy。延迟xy可以通过将引入零。

例子

d= finddelay (x,y,maxlag)使用maxlag找到之间的估计延迟(s)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 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×40 1 2 1

重复计算,但现在0作为第二行添加一个额外的行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 0 0 1 3 2];Y = [0 0 0 1 3 2;1 2 3 0 0 0)';

计算column-by-column延迟。设置一个最大相关窗口大小为每个通道8。

maxlag = [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——- - - - - -NX(X> 1,NX> 1)和y是一个矩阵的大小Y——- - - - - -NY(Y> 1,NY> 1,NY> 1),返回一个行向量d估计每列之间的延迟x和相应的列y。使用的列数x必须等于列数的y(例如,NX=NY)。

提示

  • xy不需要延迟的精确复制,finddelay (x,y)返回一个通过互相关估计延误。然而这估计延迟一个有用的意义只有在延迟的版本之间有足够的相关性xy

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

    maxlag X Y D计算了……
    整数值标量 行或列向量或矩阵 行或列向量或矩阵 Cross-correlating的列XY在一系列的滞后maxlag:maxlag
    整数值行或列向量 行或列向量的长度lX≥1 矩阵的大小Y——- - - - - -NY(Y> 1,NY> 1) Cross-correlatingX和列jY在一系列的滞后maxlag(j):maxlag(j),j= 1:NY
    整数值行或列向量 矩阵的大小X——- - - - - -NX(X> 1,NX> 1) 行或列向量的长度lY≥1 Cross-correlating列jXY在一系列的滞后maxlag(j):maxlag(j),j= 1:NX
    整数值行或列向量 矩阵的大小X——- - - - - -NX(X> 1,NX> 1) 矩阵的大小Y- - - - - -由- - - - - -NY(Y> 1,NY=NX> 1) Cross-correlating列jX和列jY在一系列的滞后maxlag(j):maxlag(j),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++代码生成
生成C和c++代码使用MATLAB®编码器™。