我想在时间序列 B 中找到信号 A 的精确副本。我正在使用下面的简单玩具示例,其中 A 位于 B 中的第 4 个位置。
我认为使用xcorr
可以实现这一点,但我显然在某个地方失败了。尽管有 MATLAB 帮助说明和以下评论,xcorr
但似乎不是正确的功能:xcorr
互相关通常是确定两个信号之间时间延迟的最简单方法。峰值位置表示两个信号最相似的时间偏移量。
A = [1 2 1];
B = [0 9 8 1 2 1 7 3 1 0];
[c, lags] = xcorr(A,B)
lags(c==max(c))
c =
Columns 1 through 12
0.0000 1.0000 5.0000 14.0000 18.0000 11.0000 6.0000 12.0000 26.0000 26.0000 9.0000 0.0000
Columns 13 through 19
0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000
lags =
-9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9
ans =
-1 0
最大相关值位于 -1 和 0 的滞后处,这与使 A 匹配 B 所需的偏移不匹配。这让我问:
- 什么时候可以
xcorr
在另一个信号中找到准确的信号?2. 我应该使用什么函数来找到 A 在 B 中的位置?
理想情况下,我想在更复杂的信号上测试这种方法,并寻找在其他(更长)信号中检测“相似”信号的方法。