0

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

可能很难理解我的问题,所以请询问是否有不清楚的地方。

编辑

要找到中点,我们必须查看端点的长度。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
4

1 回答 1

0

根据文档,当您在模式中关联y1(length N+1) 和y2(length M+1, with M<=N) 时'valid',将返回中间N-M+1=(N+1)-(M+1)+1输出值,从M [在'full'模式中,值从0to返回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")irange(len(ycorr))

于 2012-08-30T11:53:25.867 回答