MATLAB中finddelay函数使用

目录

语法

说明

示例


        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函数来确定用户指定的所有可能延迟下每对信号之间的互相关。然后计算每对信号之间的归一化互相关。估计的延迟由归一化互相关具有最大绝对值的滞后的负值给出。

         如果一个以上的滞后导致互相关的最大绝对值,例如在周期信号的情况下,延迟被选择为这些滞后中最小的(绝对值)的负值。

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值