概述
目录
语法
说明
示例
对齐两个信号,其中第一个信号滞后三个样本
对齐两个信号,其中第二个信号滞后两个样本
对齐第二个信号有噪声的两个信号
使用“截断”选项对齐两个信号
对准一个信号和它的周期性重复
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函数使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复