主要内容

finddelay

估计信号之间的延迟

描述

例子

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

例子

d= finddelay (xymaxlag使用maxlag找出之间的估计延迟x而且y

例子

全部折叠

如下所示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

下面说明了一种情况YX但是很吵。

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 10 0;0 0 2 1];Maxlag = 3;D = finddelay(X,Y,maxlag)
D =1×40 -1 1 1

指定X而且Y同样大小的。finddelaycolumn-by-column工作。

X = [0 1 0 0;1 2 0 0;2 0 10 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

重复计算,但现在添加一个额外的零行作为的第二行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

创建两个多通道信号,X而且Y,使每个通道的Y是否每个通道都有一个延迟的相同副本X

X = [1 3 2 0 0 0 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和NX1)和y矩阵的大小Y——- - - - - -NYY> 1和NY> 1和NY> 1),返回行向量d的每列之间的估计延迟x的对应列y.的列数x必须等于的列数y(例如,NXNY).

提示

  • x而且y不需要精确的相互延迟副本,作为finddelay (xy通过相互关联返回延迟的估计值。然而,只有在延迟版本之间有足够的相关性时,这个估计的延迟才有有用的意义x而且y

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

    maxlag X Y D是由…
    整数值标量 行或列向量或矩阵 行或列向量或矩阵 的列进行交叉关联X而且Y在一系列滞后中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列jX而且Y在一系列滞后中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不同的通道,您需要追加一行或多行零x所以它看起来像一个矩阵。然后每一列x将被认为是一个通道。

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

    的每一列xm对应于单个通道,每个通道包含样本1而且0

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

算法

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

如果有多个滞后导致相互关联的绝对值最大,例如在周期信号的情况下,则延迟选择为此类滞后中最小(绝对值)的负数。

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

扩展功能

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