使用matlab进行高相关的位置

时间:2012-11-28 08:22:28

标签: matlab octave cross-correlation

我有一个或多或少重复的信号(从一个到另一个不完全一样,见左边的情节)。如果我使用自相关,我会得到一些最大值(右图),但它并没有告诉我相关性在哪里(哪个样本号)。它给了我滞后但我失去了关于位置的信息,即我信号出现的原始数据中的样本号。例如在auto-corr中。如图所示,样品500处的第二峰值应对应于数据图中约样品750处的信号。我可以通过使用一个小窗口来移动数据跟踪并找到最大值,但这需要花费太多时间。在matlab中有更快的方法吗?谢谢。 enter image description here

2 个答案:

答案 0 :(得分:1)

我认为你错误地解释了自相关。 5000处的相关峰值不是由于时间序列中的单个位置,而是由于整个时间序列与自身相似,当被5000个样本偏移时。这个峰值的大部分是由于时间序列峰值在18000,因为它是7500的时间序列峰值。例如,如果您没有真正的周期性时间序列(即,如果,那么自相关将变得非常奇怪)脉冲之间的间隔是不均匀的。)

如果您可以隔离脉冲的一个示例,并选择您想要的位置作为t = 0,那么该脉冲与时间序列的相关性将为您提供您想要的结果。每个脉冲将在其发生的时间点清楚地点亮。然后你只需要一个峰值探测器。

答案 1 :(得分:0)

是的,您可以使用

获取具有最大振幅的元素的索引
treshold = max(a)/2
ind = find(a>=treshold)

其中a是包含相关结果的矩阵。