我想找出两个信号x1和x2之间的相关性。
x1 = [1 1 1 1 1]
x2 = [1 1 1 1 1]
r1 = xcorr(x1,x2) //function in matlab to find cross correlation of x1 and x2
x1和x2都是这样的
它们的相互关系是这样的
我知道,相关性测量两个信号之间的相似程度,给予最高值对应于最大相似度的点(两个信号相对彼此偏移,以测量在不同点上的相似性,对吗?)。所以在这种情况下,互相关在所有点上都应该给出一个很高的值,但事实并非如此最大值在第五位置。为什么有人能给我解释一下吗?
最佳答案
你似乎对互相关的工作原理有点误解互相关接收一个信号,并将其与另一个信号的移位版本进行比较如果您还记得,两个信号的(非标准化)互相关定义为:
(来源:jiracek at www-rohan.sdsu.edu)s
和h
是两个信号因此,我们转移第二个信号的版本h
,并将每个元素的乘积相加互相关图的水平轴表示移位,而垂直轴表示每个移位的互相关的输出。让我们手工计算信号的互相关,这样我们就能更好地理解MATLAB给我们的输出。
为了计算输出,当两个信号开始重叠时,需要对两个信号进行零填充以适应第一个点具体地说,我们需要调零pad,以便在N2-1
的左边有s
个零,在N2-1
的右边有s
个零,以便于我们计算互相关N2
在本例中是h
的长度对于给定信号移位的每次计算互相关,您将创建一个与零填充版本的h
大小相同的所有零的信号,然后将原始信号s
放入这个较大的信号中您可以使用这个新信号与零填充版本的h
进行比较。
实际上,互相关的一个性质是它是可交换的如果你有一个较长的信号,而一个较短的信号,那么当你移动较短的信号时,你就更容易让长信号保持静止记住,无论你选择哪一个班次,你肯定会得到同样的结果,但你应该总是选择更容易的道路!
回到过去,这就是互相关的第一个值(s
)。
s = [0 0 0 0 1 1 1 1 1 0 0 0 0]
h = [1 1 1 1 1 0 0 0 0 0 0 0 0]
第二个信号从左向右滑动,我们从
shift = 1
的右端开始重叠第一个信号,即h
我们在s
和s
之间逐点进行乘法运算,然后对元素进行求和在这种情况下,我们得到:s ** h = (0)(1) + (0)(1) + (0)(1) + (0)(1) + (1)(1) + (0)(1) + (0)(1) + (0)(1) + (0)(1)
= 1
本例中的
h
是(我的版本)互相关运算符让我们看看**
:s = [0 0 0 0 1 1 1 1 1 0 0 0 0]
h = [0 1 1 1 1 1 0 0 0 0 0 0 0]
请记住,我们将向右移动1次,并且
shift = 2
保持不变按照上面的计算,我们应该得到:s ** h = (0)(1) + (0)(1) + (0)(1) + (0)(1) + (1)(1) + (1)(1) + (0)(1) + (0)(1) + (0)(1)
= 2
如果对其他移位重复此操作,您将看到值继续增加1,直到出现总重叠,即第五个移位(
s
)在这种情况下,我们得到:s = [0 0 0 0 1 1 1 1 1 0 0 0 0]
h = [0 0 0 0 1 1 1 1 1 0 0 0 0]
当你计算互相关时,我们得到5现在,当我们计算第六个移位(
shift = 5
)时,我们向右移动1,这时互相关开始下降明确地:s = [0 0 0 0 1 1 1 1 1 0 0 0 0]
h = [0 0 0 0 0 1 1 1 1 1 0 0 0]
如果你继续计算互相关,你会看到结果是4你继续向右移动,你会看到我们每次移动的值都会减少1到了最后一个点,只有一个点
shift = 6
和s
重叠,这就是:s = [0 0 0 0 1 1 1 1 1 0 0 0 0]
h = [0 0 0 0 0 0 0 0 1 1 1 1 1]
通过计算互相关,我们只得到1的值您还将看到它位于
h
因此,这解释了互相关开始增加的图形,因为重叠的数量在增加然后,在两个信号完全重叠时,在shift = 9
达到最大值。然后,由于重叠量也开始减少,互相关开始减小。您还将注意到,我们需要计算的移位总数是
shift = 5
,这是一个互相关特性N1 + N2 - 1
和N1
分别是N2
和s
的长度因此,考虑到h
,我们看到总移位数是N1 = N2 = 5
,这也对应于我们上面计算的最后一个移位。希望这有帮助!