目录
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.