0

最初のデータセットは2番目のデータセットよりも長いため、 と の 2 つのデータセットが(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) )

私の質問は、相互相関の中点をどのように見つけるかです = ycorr2 つのデータセットの長さが同じで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

ドキュメンテーションによると、モードで (長y1N+1) とy2(長さM+1, とM<=N)を相関させると'valid'、中間のN-M+1=(N+1)-(M+1)+1出力値が返されます。M'full'0N+M'same'N(M-1)/2

したがって、len(ycorr) = len(y1)-len(y2)+1=12つのベクトルが同じサイズの場合)

あなたも持っていycorr[i] = np.correlate(y1[i:len(y2)+i], y2, "valid")ますirange(len(ycorr))

于 2012-08-30T11:53:25.867 に答える