交叉点的中点

时间:2012-08-30 09:12:19

标签: python scipy cross-correlation

我有两个数据集(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) )

我的问题是如何找到互相关的中点=如果两个数据集具有相同的长度和ycorr,则计算mode='valid'的一个点。 所以中点不是xcorr [len(xcorr)/ 2]。

可能很难理解我的问题所以请询问是否有不明确的事情。

修改

要找到中点,我们必须在终点处查看长度。因此,最后x1x2多长。

中点由

给出
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 个答案:

答案 0 :(得分:0)

根据documentation,当您将y1(篇幅N+1)与y2(篇幅M+1M<=N)相关联时'valid'模式,返回中间N-M+1=(N+1)-(M+1)+1输出值,从M开始[在'full'模式下,值从0返回到N+M ,在'same'模式下,从N开始返回(M-1)/2个中间值

所以,如果两个向量具有相同的大小,你应该len(ycorr) = len(y1)-len(y2)+1=1

ycorr[i] = np.correlate(y1[i:len(y2)+i], y2, "valid")

中的所有i也有range(len(ycorr))