Engee 文档

芬德莱

信号之间的延迟的估计。

库::`工程师`

语法

函数调用

争论

输入参数

# x 是 参考输入信号

+ 向量资料 | 矩阵

Details

指定为矢量或矩阵的参考输入信号。

# y — 输入信号

+ 向量资料 | 矩阵

Details

指定为矢量或矩阵的输入信号。

# maxlag — 最大相关窗口大小

+ 标量,标量 | 向量资料

Details

相关窗口的最大大小,设置为整数标量或向量。 如果有任何元素 马克斯拉格 如果它是负的,那么它被它的绝对值所取代。 如果有任何元素 马克斯拉格 不是整数,是复数,等于 资讯 然后 芬德莱 返回错误。

输出参数

# d — 延迟

+ 标量,标量 | 向量资料

Details

输入信号之间的延迟,作为整数标量或向量返回。 如果 [参数:y] 延迟相对 [参数:x] 然后 d 肯定的。 如果 [参数:y] 领先于 [参数:x] 然后 d 否定。 如果多个延迟是可能的,如在周期性信号的情况下,那么返回具有最低绝对值的延迟。 如果具有相同绝对值的正延迟和负延迟都是可能的,则返回正延迟。

如果 [参数:x] -矩阵尺寸 ( ),以及 [参数:y] -矩阵尺寸 ( ),则 芬德莱 返回向量字符串 d 每列之间的估计延迟值 [参数:x] 和相应的列 [参数:y]. 有了这个用法 [参数:x][参数:y] 必须具有相同数量的列( ).

例子:

输入信号 XY -向量,相关窗口的最大尺寸 马克斯拉格 未指定

Details

一个例子,当 Y 延迟相对 X 对于两个计数:

import EngeeDSP.Functions: finddelay

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

print("D = ", D)
D = 2

一个例子,当 Y 领先于 X 对于三个计数:

import EngeeDSP.Functions: finddelay

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

打印("D=",D)
D = -3

一个例子,当 YX,但很吵:

import EngeeDSP.Functions: finddelay

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

print("D = ", D)
D = 0

一个例子,当 Y 它是一个定期版本 X 并返回尽可能低的延迟。:

import EngeeDSP.Functions: finddelay

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

print("D = ", D)
D = -1

的输入信号 X -向量, Y -矩阵,相关窗口的最大大小 马克斯拉格 -标量

Details

信号时的一个例子 X -向量, Y -矩阵,相关窗口的最大大小 马克斯拉格 -标量:

import EngeeDSP.Functions: finddelay

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=",D)
D = [0 -1 1 1]

输入信号 XY -矩阵,相关窗口的最大大小 马克斯拉格 未指定

Details

信号时的一个例子 XY -相同维度的矩阵:

import EngeeDSP.Functions: finddelay

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)

print("D = ", D)
D = [0 1 -2 -1]

现在添加到 Y 再多一行:

import EngeeDSP.Functions: finddelay

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;
     0 0 0 0;
     1 1 2 0;
     2 2 0 1;
     1 0 0 2;
     0 0 0 0]
D = finddelay(X,Y)

print("D = ", D)
D = [1 2 -1 0]

输入信号 XY -矩阵,相关窗口的最大大小 马克斯拉格 -向量

Details

让我们创建两个多通道信号 XY 使各通道 Y 每个频道都有一个延迟的相同副本 X. 让我们设置相关窗口的最大大小 8 对于每个通道,我们将按列计算延迟:

import EngeeDSP.Functions: finddelay

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 3 2 0 0 0]'
maxlag=[8 8]
D=finddelay(X,Y,maxlag)

打印("D=",D)
D = [3 -5]

将相关窗口的大小减小到 3 对于第一通道和之前 5 对于第二个:

import EngeeDSP.Functions: finddelay

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 3 2 0 0 0]'
maxlag = [3 5]
D = finddelay(X,Y,maxlag)

print("D = ", D)
D = [3 -5]

将相关窗口的大小增加到 5 为第一信道并将其降低到 3 对于第二个:

import EngeeDSP.Functions: finddelay

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 3 2 0 0 0]'
maxlag = [5 3]
D = finddelay(X,Y,maxlag)

print("D = ", D)
D = [3 -3]

建议

xm = [1 1 1 1;
      0 0 0 0]

算法

功能 芬德莱 使用函数 xcorr 来确定在用户指定的所有可能延迟处的每对信号之间的互相关性。 然后计算每对信号之间的归一化互相关。 估计延迟被定义为归一化互相关具有最高绝对值的延迟的负值。

如果多个延迟是可能的,如在周期性信号的情况下,那么返回具有最低绝对值的延迟。 如果具有相同绝对值的正延迟和负延迟都是可能的,则返回正延迟。

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