【发布时间】:2012-08-30 09:12:19
【问题描述】:
我有两个数据集(x1,y1) 和(x2,y2),其中第一个数据集比第二个数据集长,这意味着x1[0]<x2[0] 和x1[-1]>x2[0]。但是第一个数据集到每一边的长度一般是不一样的。
我使用 scipy 交叉关联
ycorr = scipy.correlate(y1,y2,mode='valid')
xcorr = np.linspace( 0,len(ycorr)-1,len(ycorr) )
我的问题是我如何找到互相关的中点 = 如果两个数据集具有相同的长度和 mode='valid',则计算 ycorr 的点。
所以中点不是 xcorr[len(xcorr)/2]。
我的问题可能很难理解,所以如果有不清楚的地方,请询问。
编辑
要找到中点,我们必须查看端点的长度。那么最后x1 比x2 长多少。
中点由下式给出
for i in xrange( len(x1)-1 ):
if x1[i]<x2[-1] and x1[i+1]>x2[-1]:
I = i
break
mid_point = (len(y1[I:-1])+len(y1[I+1:-1]))/2
【问题讨论】:
-
问题:1/“第一个数据集比第一个数据集长的地方”:你的意思是“第二个”,对吗? 2/ 你将 y1 & y2 关联起来;但是在第一段中,您比较了 x1 和 x2? 3/ 我对 correlate() 不太熟悉,但是使用 mode='valid',它似乎只返回 y1 和 y2 重叠的值;但这仍然不会返回一个点(“一点”)。哪一点?最好的猜测是,您需要 x1 或 x2 中的一个点对应于输出相关性的中点,假设 y1 在长度上与 x1 匹配,并且对于 y2 和 x2 也是如此。对吗?
-
1:是的。我已经更新了帖子。 2:我将 y1 和 y2 关联起来,因为这就是人们用来进行关联的方式。 3:没错。 mode='valid' 返回第一个和第二个数据集重叠的点。如果计算了互相关并且两个数据集具有相同的长度(len(x1)=len(x2)),我正在谈论的单点将是这一点。那是对的。 x1 和 y1 的长度相同(x2 和 y2 同上)。
标签: python scipy cross-correlation