• MATLAB中alignsignals函数使用


    目录

    语法

    说明

    示例

    对齐两个信号,其中第一个信号滞后三个样本

    对齐两个信号,其中第二个信号滞后两个样本

    对齐第二个信号有噪声的两个信号

    使用“截断”选项对齐两个信号

    对准一个信号和它的周期性重复


            alignsignals函数的功能是通过延迟最早信号来对准两个信号。

    语法

    1. [Xa,Ya] = alignsignals(X,Y)
    2. [Xa,Ya] = alignsignals(X,Y,maxlag)
    3. [Xa,Ya] = alignsignals(X,Y,maxlag,'truncate')
    4. [Xa,Ya,D] = alignsignals(___)

    说明

            [Xa,Ya] = alignsignals(X,Y)估算两个输入信号X和Y之间的延迟D,并返回对齐的信号Xa和Ya。

            (1)如果Y相对于X延迟,则D为正,X延迟D个样本。

            (2)如果Y相对于X超前,则D为负,Y延迟–D个样本。

    X或Y方向的延迟可以通过前置零来引入。

            [Xa,Ya] = alignsignals(X,Y,maxlag)使用maxlag作为最大窗口大小来计算两个输入信号X和Y之间的估计延迟D,并返回对齐的信号Xa和Ya。

            [Xa,Ya] = alignsignals(X,Y,maxlag,' truncate ')保持对齐信号Xa和Ya的长度分别与输入信号X和Y的长度相同。

            (1)如果估计的延迟D是正的,则在X前面加上D个零,并且X的最后D个样本被截断。

            (2)如果估计延迟D为负,则Y前面会加上–D个零,Y的最后–D个样本会被截断。

    注意:X和Y分别是长度为LX和LY的行或列向量。

            如果D ≥ LX,那么Xa由LX个零组成。X的所有样本都丢失了。

            如果–D≥LY,那么Ya由LY个零组成。Y的所有样本都丢失了。

            要避免在使用“truncate”选项时为maxlag分配特定值,请将maxlag设置为[]。

            [Xa,Ya,D] = alignsignals(___)返回估计的延迟D。此语法可以包括以前语法中使用的任何输入参数。

    示例

    对齐两个信号,其中第一个信号滞后三个样本

            通过将信号Y延迟三个样本,使其相对于X对齐。 创建两个信号,X和Y。X与Y完全相同,除了X有三个前导零和一个附加的跟零。对准两个信号。

    1. X = [0 0 0 1 2 3 0 0];
    2. Y = [1 2 3 0];
    3. [Xa,Ya] = alignsignals(X,Y)
    4. Xa = 1×8
    5. 0 0 0 1 2 3 0 0
    6. Ya = 1×7
    7. 0 0 0 1 2 3 0

    对齐两个信号,其中第二个信号滞后两个样本

            当Y相对于X延迟两个样本时,对齐信号X。 创建两个信号,X和Y。Y与X完全相同,只是Y有两个前导零。对准两个信号。

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

    对齐第二个信号有噪声的两个信号

            将信号Y相对于X对齐,尽管Y是一个高噪声信号。 创建两个信号,X和Y。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. [Xa,Ya,D] = alignsignals(X,Y)
    4. Xa = 1×6
    5. 0 0 1 2 3 0
    6. Ya = 1×6
    7. 0.0200 0.1200 1.0800 2.2100 2.9500 -0.0900
    8. D = 0

            你不需要改变输入信号来产生输出信号。延迟D为零。

    使用“截断”选项对齐两个信号

            调用alignsignals函数时调用“truncate”选项。 创建两个信号,X和Y。Y与X完全相同,只是Y有两个前导零。应用“截断”指令对齐两个信号。

    1. X = [1 2 3];
    2. Y = [0 0 1 2 3];
    3. [Xa,Ya,D] = alignsignals(X,Y,[],'truncate')
    4. Xa = 1×3
    5. 0 0 1
    6. Ya = 1×5
    7. 0 0 1 2 3
    8. D = 2

            注意,输出信号Xa的长度为3,与输入信号x的长度相同。 如果使用“truncate”选项最终截断了X的所有原始数据,则会发出警告。若要使alignsignals发出这样的警告,请运行以下示例。

    1. Y = [0 0 0 0 1 2 3];
    2. [Xa,Ya,D] = alignsignals(X,Y,[],'truncate')

            警告:第一个输入X中的所有原始数据已被截断,因为X的长度小于估计的延迟D:为避免截断此数据,请不要使用“truncate”选项。

    1. Xa = 1×3
    2. 0 0 0
    3. Ya = 1×7
    4. 0 0 0 0 1 2 3
    5. D = 4

    对准一个信号和它的周期性重复

            将信号Y与X对齐,尽管Y是X的周期性重复,返回尽可能小的延迟。 创建两个信号,X和Y。Y由X的非零部分的两个副本组成,由零分隔。对准两个信号。

    1. X = [0 1 2 3];
    2. Y = [1 2 3 0 0 0 0 1 2 3 0 0];
    3. [Xa,Ya,D] = alignsignals(X,Y)
    4. Xa = 1×4
    5. 0 1 2 3
    6. Ya = 1×13
    7. 0 1 2 3 0 0 0 0 1 2 3 0 0
    8. D = -1

    算法:

            可以在finddelay函数的规范中找到延迟估计的理论(参见算法)。

            alignsignals函数使用估计的延迟D来延迟最早的信号,使得两个信号具有相同的起始点。

            如finddelay函数所规定的,这对信号不需要彼此是精确延迟的副本。然而,只有当信号之间存在足够的相关性时,信号才能成功对齐。有关估计协方差和相关函数的更多信息,请参见[1]。

            如果信号具有脉冲或过渡等特征,可以使用测量函数而不是相关来更有效地对齐它们。有关示例,请参见对齐两个双电平波形。

    参考:

            [1] Orfanidis, Sophocles J. Optimum Signal Processing. An Introduction. 2nd Ed. Englewood Cliffs, NJ: Prentice-Hall, 1996.

  • 相关阅读:
    docker报错问题解决:Error Invalid or corrupt jarfile app.jar
    PyTorch nn.RNN 参数全解析
    mmpose系列(三):中的hrnet_w48+deeppose的方法
    Redis网络模型
    物理引擎介绍
    Win11遇到问题需要重启怎么办?
    Jenkins
    【开发小记】vue项目优化
    9-WebUtil工具类.md
    Mac使用brew搭建kafka集群
  • 原文地址:https://blog.csdn.net/jk_101/article/details/126242834