• MATLAB中finddelay函数使用


    目录

    语法

    说明

    示例


            finddelay函数的功能是估计信号之间的延迟。

    语法

    1. d = finddelay(x,y)
    2. 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延迟了两个样本。

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

            这是Y相对于X超前三个样本的情况。

    1. X = [0 0 0 1 2 3 0 0]';
    2. Y = [1 2 3 0]';
    3. D = finddelay(X,Y)
    4. D = -3

            下图说明了Y与X对齐但有噪声的情况。

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

            如果Y是X的周期版本,则返回最小的可能延迟。

    1. X = [0 1 2 3];
    2. Y = [1 2 3 0 0 0 0 1 2 3 0 0];
    3. D = finddelay(X,Y)
    4. D = -1

    x是向量,Y是矩阵,maxlag是标量

            maxlag被指定为标量(相同的最大窗口大小)。

    1. X = [0 1 2];
    2. Y = [0 1 0 0;
    3. 1 2 0 0;
    4. 2 0 1 0;
    5. 0 0 2 1];
    6. maxlag = 3;
    7. D = finddelay(X,Y,maxlag)
    8. D = 1×4
    9. 0 -1 1 1

    x和Y是矩阵,没有指定maxlag

            指定相同大小的X和Y。finddelay逐列工作。

    1. X = [0 1 0 0;
    2. 1 2 0 0;
    3. 2 0 1 0;
    4. 1 0 2 1;
    5. 0 0 0 2];
    6. Y = [0 0 1 0;
    7. 1 1 2 0;
    8. 2 2 0 1;
    9. 1 0 0 2;
    10. 0 0 0 0];
    11. D = finddelay(X,Y)
    12. D = 1×4
    13. 0 1 -2 -1

            重复计算,但是现在添加一行额外的零作为y的第二行。

    1. Y = [0 0 1 0;
    2. 0 0 0 0;
    3. 1 1 2 0;
    4. 2 2 0 1;
    5. 1 0 0 2;
    6. 0 0 0 0];
    7. D = finddelay(X,Y)
    8. D = 1×4
    9. 1 2 -1 0

    X和Y是矩阵,并且指定了maxlag

            创建两个多声道信号X和Y,使得Y的每个声道都有X的每个声道的延迟的相同副本。

    1. X = [1 3 2 0 0 0 0 0;
    2. 0 0 0 0 0 1 3 2]';
    3. Y = [0 0 0 1 3 2;
    4. 1 3 2 0 0 0]';

            计算逐列延迟。为每个通道设置最大相关窗口大小8。

    1. maxlag = [8 8];
    2. D = finddelay(X,Y,maxlag)
    3. D = 1×2
    4. 3 -5

            将第一通道的相关窗口大小减小到3,第二通道的相关窗口大小减小到5。

    1. maxlag = [3 5];
    2. D = finddelay(X,Y,maxlag)
    3. D = 1×2
    4. 3 -5

            将第一个通道的相关窗口大小增加到5,将第二个通道的相关窗口大小减少到3。

    1. maxlag = [5 3];
    2. D = finddelay(X,Y,maxlag)
    3. D = 1×2
    4. 3 -3

    算法:

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

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

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

  • 相关阅读:
    回文数 洛谷 - P1015
    Redis Cluster 为什么不支持传统的事务模型
    布隆过滤器的优缺点及哈希切割问题
    web3.0是什么?
    引擎入门 | Unity UI简介–第1部分(8)
    深入理解Java线程间通信
    android开发中常用的Eclipse快捷键详细整理
    uniapp-路由uni-simple-router
    pinia——打败vuex的新一代vue存储库
    全球与中国亚麻籽行业消费量调研及未来产销需求分析报告2022-2028年
  • 原文地址:https://blog.csdn.net/jk_101/article/details/126243228