文档

对齐两个简单信号

这个例子展示了如何使用互相关对齐信号。在大多数情况下,信号有不同的长度,为了正确地同步它们,您必须考虑长度和输入参数的顺序xcorr

考虑两个信号,除了周围0的数量和其中一个滞后于另一个之外,它们是相同的。

深圳= 30;sg = randn(1,兰迪(8)+ 3);s1 =[0(1,兰迪(深圳)1)sg 0(1,兰迪(深圳)1)];s2 =[0(1,兰迪(深圳)1)sg 0(1,兰迪(深圳)1)];mx = max(元素个数(s1),元素个数(s2));斧子(1)=次要情节(2,1,1);[0 mx+1] ax(2) = subplot(2,1,2);茎(s2,‘*’mx + 1) xlim ([0])

确定这两个信号中哪一个比另一个长,即有更多的元素,不管它们是否为零。

如果nummel (s1) = > nummel (s2) = s1;sshort = s2;其他的slong = s2;sshort = s1;结束

计算两个信号的互相关。运行xcorr用较长的信号作为第一个参数,较短的信号作为第二个参数。策划的结果。

[acor,滞后]= xcorr (slong sshort);[acormax,我]= max (abs (acor));lagDiff =滞后(我)
lagDiff = 15
图阻止(滞后,acor)情节(lagDiff acormax,‘*’)举行

调整信号。考虑滞后信号比其他信号“更长”,从某种意义上说,您必须“等待更长时间”才能检测到它。

  • 如果lagDiff是否正,通过考虑长信号的元素来“缩短”长信号lagDiff加1到最后。

  • 如果lagDiff是负的,通过考虑它的元素来“延长”短信号-lagDiff加1到最后。

您必须在滞后差上加上1,因为MATLAB®使用基于1的索引。

如果lagDiff > 0 sorig = sshort;salign = slong (lagDiff + 1:结束);其他的sorig = slong;salign = sshort (-lagDiff + 1:结束);结束

绘制对齐的信号。

Subplot (2,1,1) stem(sorig) xlim([0 mx+1]) Subplot (2,1,2) stem(salign,‘*’mx + 1) xlim ([0])

这种方法之所以有效,是因为互相关运算是反对称的,而且因为xcorr处理不同长度的信号,方法是在结束较短的信号。这种解释可以让您轻松地使用MATLAB对齐信号结束操作人员无需手动填充。

您还可以通过调用alignsignals函数。

(x1, x2) = alignsignals (s1, s2);Subplot (2,1,1) stem(x1) xlim([0 mx+1]) Subplot (2,1,2) stem(x2,)‘*’mx + 1) xlim ([0])

这个话题有用吗?