我是靠谱客的博主 醉熏哈密瓜,最近开发中收集的这篇文章主要介绍MATLAB中alignsignals函数使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

语法

说明

示例

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

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

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

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

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


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

语法

[Xa,Ya] = alignsignals(X,Y)
[Xa,Ya] = alignsignals(X,Y,maxlag)
[Xa,Ya] = alignsignals(X,Y,maxlag,'truncate')
[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有三个前导零和一个附加的跟零。对准两个信号。

X = [0 0 0 1 2 3 0 0];
Y = [1 2 3 0];

[Xa,Ya] = alignsignals(X,Y)


Xa = 1×8

     0     0     0     1     2     3     0     0

Ya = 1×7

     0     0     0     1     2     3     0

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

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

X = [1 2 3];
Y = [0 0 1 2 3];
maxlag = 2;

[Xa,Ya,D] = alignsignals(X,Y,maxlag)


Xa = 1×5

     0     0     1     2     3

Ya = 1×5

     0     0     1     2     3

D = 2

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

        将信号Y相对于X对齐,尽管Y是一个高噪声信号。 创建两个信号,X和Y。Y与X完全相同,只是添加了一些噪声。对准两个信号。

X = [0 0 1 2 3 0];
Y = [0.02 0.12 1.08 2.21 2.95 -0.09];

[Xa,Ya,D] = alignsignals(X,Y)


Xa = 1×6

     0     0     1     2     3     0

Ya = 1×6

    0.0200    0.1200    1.0800    2.2100    2.9500   -0.0900

D = 0

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

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

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

X = [1 2 3];
Y = [0 0 1 2 3];

[Xa,Ya,D] = alignsignals(X,Y,[],'truncate')


Xa = 1×3

     0     0     1

Ya = 1×5

     0     0     1     2     3

D = 2

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

Y = [0 0 0 0 1 2 3];

[Xa,Ya,D] = alignsignals(X,Y,[],'truncate')

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

Xa = 1×3

     0     0     0

Ya = 1×7

     0     0     0     0     1     2     3

D = 4

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

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

X = [0 1 2 3];
Y = [1 2 3 0 0 0 0 1 2 3 0 0];

[Xa,Ya,D] = alignsignals(X,Y)


Xa = 1×4

     0     1     2     3

Ya = 1×13

     0     1     2     3     0     0     0     0     1     2     3     0     0

D = -1

算法:

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

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

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

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

参考:

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

最后

以上就是醉熏哈密瓜为你收集整理的MATLAB中alignsignals函数使用的全部内容,希望文章能够帮你解决MATLAB中alignsignals函数使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部