概述
目录
语法
说明
示例
finddelay函数的功能是估计信号之间的延迟。
语法
d = finddelay(x,y)
d = finddelay(x,y,maxlag)
说明
d = finddelay(x,y)得出输入信号x和y之间的延迟d的估计值,x和y中的延迟可以通过在前面加零来引入。
d = finddelay(x,y,maxlag)使用maxlag来查找x和y之间的估计延迟。
示例
x和Y是向量,没有指定maxlag
下面显示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
x是向量,Y是矩阵,maxlag是标量
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×4
0
-1
1
1
x和Y是矩阵,没有指定maxlag
指定相同大小的X和Y。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)
D = 1×4
0
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×4
1
2
-1
0
X和Y是矩阵,并且指定了maxlag
创建两个多声道信号X和Y,使得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 3 2 0 0 0]';
计算逐列延迟。为每个通道设置最大相关窗口大小8。
maxlag = [8 8];
D = finddelay(X,Y,maxlag)
D = 1×2
3
-5
将第一通道的相关窗口大小减小到3,第二通道的相关窗口大小减小到5。
maxlag = [3 5];
D = finddelay(X,Y,maxlag)
D = 1×2
3
-5
将第一个通道的相关窗口大小增加到5,将第二个通道的相关窗口大小减少到3。
maxlag = [5 3];
D = finddelay(X,Y,maxlag)
D = 1×2
3
-3
算法:
finddelay函数使用xcorr函数来确定用户指定的所有可能延迟下每对信号之间的互相关。然后计算每对信号之间的归一化互相关。估计的延迟由归一化互相关具有最大绝对值的滞后的负值给出。
如果一个以上的滞后导致互相关的最大绝对值,例如在周期信号的情况下,延迟被选择为这些滞后中最小的(绝对值)的负值。
成对的信号不必是彼此精确延迟的副本。然而,只有在至少一对延迟信号之间有足够的相关性时,估计的延迟才有意义。
最后
以上就是俊秀小懒虫为你收集整理的MATLAB中finddelay函数使用的全部内容,希望文章能够帮你解决MATLAB中finddelay函数使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复