芬德莱
信号之间的延迟的估计。
库::`工程师`
争论
例子:
输入信号 X 和 Y -向量,相关窗口的最大尺寸 马克斯拉格 未指定
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
一个例子,当 Y 与 X,但很吵:
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]
输入信号 X 和 Y -矩阵,相关窗口的最大大小 马克斯拉格 未指定
Details
信号时的一个例子 X 和 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;
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]
输入信号 X 和 Y -矩阵,相关窗口的最大大小 马克斯拉格 -向量
Details
让我们创建两个多通道信号 X 和 Y 使各通道 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]
建议
-
争论
[参数:x]和[参数:y]他们不必是彼此精确的弱智副本,因为finddelay([参数:x],[参数:y])通过互相关返回延迟的估计值。 但是,只有当延迟版本之间存在足够的相关性时,这种延迟估计才有意义。[参数:x]和[参数:y]. -
估计延迟值的向量的计算
[参数:d]取决于[参数:x],[参数:y]和[参数:maxlag]如表所示。[参数:maxlag][参数:x][参数:y][参数:d]一个整数标量
行向量、列向量或矩阵
行向量、列向量或矩阵
列的互相关
[参数:x]和[参数:y]在延迟周期的范围内从−[参数:maxlag]以前[参数:maxlag].具有整数值的行向量或列向量
行向量,长度的列向量
维数矩阵 上 ( )
互相关
[参数:x]和列 矩阵[参数:y]在延迟周期的范围内从−[参数:maxlag]以前[参数:maxlag]为 .具有整数值的行向量或列向量
维数矩阵 上 ( )
行向量,长度的列向量
列互相关 矩阵
[参数:x]和[参数:y]在延迟周期的范围内从−[参数:maxlag]以前[参数:maxlag]为 .具有整数值的行向量或列向量
维数矩阵 上 ( )
维数矩阵 上 ( )
列互相关 矩阵
[参数:x]和列 矩阵[参数:y]在延迟周期的范围内从−[参数:maxlag]以前[参数:maxlag]为 . -
如果你想考虑一个向量字符串
[参数:x]长度 作为包含单个计数从 在各种渠道中,有必要添加到[参数:x]一行或多行零,使其采用矩阵的形式。 然后每列[参数:x]它将被认为是一个通道。例如,
<参数:x>=[1111]它被认为是包含四个样本的一个通道。 要将其视为四个不同的通道,每个通道包含一个样本,请定义一个新矩阵xm系列,使得每列xm系列对应于一个通道,每个通道包含样本1和0.
xm = [1 1 1 1;
0 0 0 0]
算法
功能 芬德莱 使用函数 xcorr 来确定在用户指定的所有可能延迟处的每对信号之间的互相关性。 然后计算每对信号之间的归一化互相关。 估计延迟被定义为归一化互相关具有最高绝对值的延迟的负值。
如果多个延迟是可能的,如在周期性信号的情况下,那么返回具有最低绝对值的延迟。 如果具有相同绝对值的正延迟和负延迟都是可能的,则返回正延迟。
信号对不必是彼此的精确延迟副本。 然而,仅当至少一对延迟信号之间存在足够的相关性时,估计的延迟才有意义。