我有两个数据集(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
答案 0 :(得分:0)
根据documentation,当您将y1
(篇幅N+1
)与y2
(篇幅M+1
与M<=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))