Numpy: 正規化された相互相関(Trac#1714)

作成日 2012年10月20日  ·  12コメント  ·  ソース: numpy/numpy

_unknownに割り当てられたtracユーザーbublaによる2011-01-15の元のチケットhttp://projects.scipy.org/numpy/ticket/1714。_

こんにちは、
correlate関数を拡張するパッチを作成したので、正規化された相互相関を計算できるようになりました
[ http://en.wikipedia.org/wiki/Cross-correlation#Normalized_cross -correlation theWikipediaの記事]を参照してください。

もちろん、ドキュメントと簡単なdoctestも追加しました。
パッチは最新のマスターGitに対するものです

01 - Enhancement Patch numpy.core

最も参考になるコメント

ここを指すSOでの答えがあります: https

また、最も関連性の高いコードが含まれています。 上記の添付ファイルは(少なくとも私にとっては)もう利用できないので、実装の開始としてこれを用意しておくと役立つと思いました。

また、少なくとも私の場合は、このようにnp.correlateを使用する前に入力ベクトルを「正規化」するように機能し、[-1,1]の範囲内で妥当な値が返されることも確認できます。

a = (a - np.mean(a)) / (np.std(a) * len(a))
b = (b - np.mean(b)) / (np.std(b))
c = np.correlate(a, b, 'full')

全てのコメント12件

2011-01-15にtracユーザーbublaによって追加された添付ファイル: correlate.parch

_ @rgommersは2011-03-29_に書き込みました

これは新機能なので、これを含めることができるかどうかをメーリングリストで確認する必要があります。

単体テストが必要です。テストスイートでは、デフォルトでdoctestは実行されません。

これは便利かもしれません。

誰かがこれが正しいかどうかを確認できますか?

mode='full'と組み合わせて何が正しいのか疑問に思っています。

私はたまたまこの機能が必要ですが、mode = 'valid'であり、両方の配列が同じサイズである場合を除いて、それが正しいかどうかはわかりません。 つまり、各ウィンドウに正規化を適用する必要があると思います。

問題に関する最新情報はありますか?
パッチはすべての相関モードでテストされていますか?

@VlamV 、ここには何もないので、いや、そうは思わない。 他のモードで修正する時間があれば、追加できると思います。

これに関するニュースはありますか?

実際に使用されているaの部分の標準偏差で割るのは意味がありません( mode=sameまたはmode=full

また、単にlen(a)割る代わりに、 numpy.corrcoefbiasおよびddofオプションを使用することは意味がありません。

ここを指すSOでの答えがあります: https

また、最も関連性の高いコードが含まれています。 上記の添付ファイルは(少なくとも私にとっては)もう利用できないので、実装の開始としてこれを用意しておくと役立つと思いました。

また、少なくとも私の場合は、このようにnp.correlateを使用する前に入力ベクトルを「正規化」するように機能し、[-1,1]の範囲内で妥当な値が返されることも確認できます。

a = (a - np.mean(a)) / (np.std(a) * len(a))
b = (b - np.mean(b)) / (np.std(b))
c = np.correlate(a, b, 'full')

実際に使用されるシグナルaの部分による正規化( @wilberthのコメントを参照)は、次のリポジトリのcorrelate_template関数のnumpyメソッドを使用して実装されます: https

このページは役に立ちましたか?
0 / 5 - 0 評価