Matlab 两个信号的互相关
我想找出两个信号x1和x2之间的相关性Matlab 两个信号的互相关,matlab,signals,correlation,Matlab,Signals,Correlation,我想找出两个信号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都是这样的 它们的互相关像这样 据我所知,相关性度量两个信号之间的相似度,将最大相似度对应的点赋予最大值(两个信号相对移动以度量不同点的相似度,对吗?)。所以在这种情况下,互相关应该在所有点上都给出一个高值,但事实并非如
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都是这样的
它们的互相关像这样
据我所知,相关性度量两个信号之间的相似度,将最大相似度对应的点赋予最大值(两个信号相对移动以度量不同点的相似度,对吗?)。所以在这种情况下,互相关应该在所有点上都给出一个高值,但事实并非如此。最大值在第5位。为什么呢?有人能给我解释一下吗?你似乎对互相关的工作原理有点误解。互相关获取一个信号,并将其与另一个信号的移位版本进行比较。如果您还记得,两个信号的(非标准化)互相关定义为:
(来源:)
s
和h
是两个信号。因此,我们对第二个信号的版本进行移位h
,并将每个元素的乘积相加。互相关图的横轴表示移位,而纵轴表示每个移位处的互相关输出。让我们手工计算信号的互相关,以便更好地理解MATLAB提供的输出
为了计算输出,两个信号都需要加零,以便在两个信号开始重叠时适应第一个点。具体地说,我们需要调零垫,以便我们在s
左侧有N2-1
零,在s
右侧有N2-1
零,以便于我们计算互相关N2
在这种情况下是h
的长度。每次计算给定信号偏移量的互相关时,您都会创建一个与加零版本的s
大小相同的全零信号,然后将原始信号h
放入这个较大的信号中。您可以使用此新信号与零填充版本的s
进行比较
实际上,互相关的一个特性是它是可交换的。如果你有一个较长的信号和一个较短的信号,你会更容易让较长的信号保持静止,而你移动较短的信号。记住,无论你选择哪个班次,你肯定会得到相同的结果,但你应该总是选择更容易的道路
回到我们原来的位置,这就是互相关的第一个值(shift=1
)
第二个信号从左向右滑动,我们从h
的右端开始与第一个信号重叠的地方开始,即s
。我们在s
和h
之间进行逐点乘法,然后对元素求和。在这种情况下,我们得到:
s ** h = (0)(1) + (0)(1) + (0)(1) + (0)(1) + (1)(1) + (0)(1) + (0)(1) + (0)(1) + (0)(1)
= 1
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]
本例中的**
是(我的版本)互相关运算符。让我们看看shift=2
:
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次,并且s
保持不变。进行与上述相同的计算,我们应得到:
s ** h = (0)(1) + (0)(1) + (0)(1) + (0)(1) + (1)(1) + (1)(1) + (0)(1) + (0)(1) + (0)(1)
= 2
如果对其他班次重复此操作,您将看到值不断增加1,直到我们有了总重叠,这是第五个班次(shift=5
)。在这种情况下,我们得到:
s ** h = (0)(1) + (0)(1) + (0)(1) + (0)(1) + (1)(1) + (0)(1) + (0)(1) + (0)(1) + (0)(1)
= 1
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=6
)时,我们向右移动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。到达最后一点,s
和h
只有一个重叠点,即:
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的值。您还将看到这是在shift=9
。因此,这解释了图形中的互相关开始增加的地方,因为重叠量在增加。然后,由于两个信号完全重叠,因此在shift=5时达到最大值。然后,互相关开始减小,因为重叠量也开始减小
您还会注意到,我们需要计算的移位总数是N1+N2-1
,这是一个互相关特性N1
和N2
分别是s
和h
的长度。同样地,考虑到N1=N2=5
,我们看到总移位数为N1+N2-1=9
,这也对应于我们上面计算的最后一次移位
希望这有帮助 你提到零填充。所以N1+N2-1=9。这意味着s=[1 1 1 0 0 0 0 0 0]和h=[1 1 1 1 0 0 0 0 0 0 0 0]。在一个位置进行换档。所以shift=1应该是s=[01110000]和h=[11110000]?@Clive-自从你上次检查以来,我已经修改了我的帖子。我的零填充语句不太正确。我更改了它,所以请查看我的编辑。如有必要,请刷新页面。为什么s=[0 0 0 0 1 1 0 0 0 0]表示shift=1?@Clive-您需要将pad向左和向右归零,以允许第二个信号从一端扫描到另一端。它从两个信号之间存在单点重叠的点开始。你继续从左向右扫,直到没有更多的重叠。这实际上是在离散卷积中如何实现的,但互相关是一种特殊情况,所以我应该在一个信号的左右两侧调零pad,而另一个信号的左右两侧调零pad