私は2つの1D配列を持っており、それらの相互関係を見たいと思います。 numpyで使用する手順は?私はnumpy.corrcoef(arrayA, arrayB)
とnumpy.correlate(arrayA, arrayB)
を使用していますが、どちらも私が理解できない、または理解できない結果を示しています。誰かが数値的な結果を理解し、解釈する方法を説明してもらえますか?ありがとう。numpy.correlateとnumpy.corrcoefの値を解釈する方法は?
18
A
答えて
10
numpy.correlate
は、単に2つのベクトルの相互相関を返します。
相互相関を理解する必要がある場合は、http://en.wikipedia.org/wiki/Cross-correlationから始めてください。
良い例は、(ベクトル自体と相互相関)自己相関関数を見て見られるかもしれない:
import numpy as np
# create a vector
vector = np.random.normal(0,1,size=1000)
# insert a signal into vector
vector[::50]+=10
# perform cross-correlation for all data points
output = np.correlate(vector,vector,mode='full')
これはときに最大と櫛/シャー関数が返され両方のデータセットが重複しています。これは自己相関であるため、2つの入力信号の間に「遅れ」はありません。したがって、相関の最大値はvector.size-1です。
重複するデータの相関値のみを使用する場合は、mode='valid'
を使用できます。
3
私はただちにnumpy.correlate
にコメントできます。それは強力なツールです。私は2つの目的のためにそれを使用しました。最初は別のパターン内側のパターンを見つけることである:
import numpy as np
import matplotlib.pyplot as plt
some_data = np.random.uniform(0,1,size=100)
subset = some_data[42:50]
mean = np.mean(some_data)
some_data_normalised = some_data - mean
subset_normalised = subset - mean
correlated = np.correlate(some_data_normalised, subset_normalised)
max_index = np.argmax(correlated) # 42 !
私はそれを使用している第二の使用(および結果の解釈方法)周波数検出するためのものである:
hz_a = np.cos(np.linspace(0,np.pi*6,100))
hz_b = np.cos(np.linspace(0,np.pi*4,100))
f, axarr = plt.subplots(2, sharex=True)
axarr[0].plot(hz_a)
axarr[0].plot(hz_b)
axarr[0].grid(True)
hz_a_autocorrelation = np.correlate(hz_a,hz_a,'same')[round(len(hz_a)/2):]
hz_b_autocorrelation = np.correlate(hz_b,hz_b,'same')[round(len(hz_b)/2):]
axarr[1].plot(hz_a_autocorrelation)
axarr[1].plot(hz_b_autocorrelation)
axarr[1].grid(True)
plt.show()
2番目のピークのインデックスを検索します。これから、周波数を見つけるために作業することができます。
first_min_index = np.argmin(hz_a_autocorrelation)
second_max_index = np.argmax(hz_a_autocorrelation[first_min_index:])
frequency = 1/second_max_index
関連する問題
- 1. si_statusの値を解釈する方法
- 2. Windowsレジストリ 'ShellState'の値の解釈方法
- 3. メモリアドレスの解釈方法は?
- 4. クロームフレームチャートのギャップを解釈する方法
- 5. "const unique_ptr"の解釈方法
- 6. iostatの解釈方法?
- 7. トラックパッドピンチジェスチャーを解釈する方法IKImageBrowserView
- 8. センサ値の解釈
- 9. 文字列をバイトとして解釈する方法は?
- 10. このSBT DSLの解釈方法は?
- 11. Yoctopuceセンサーのデータロガーフォーマットの解釈方法は?
- 12. 私のstacktraceの解釈方法は?
- 13. このビットシフトの解釈方法は?
- 14. memcached cachedumpの解釈方法は?
- 15. APIドキュメントの解釈方法は?
- 16. jacoco.xmlファイルの解釈方法は?
- 17. リストをPythonの整数として解釈する方法
- 18. PyV8とhttplibを使ってJavaScriptを解釈する方法
- 19. Azure VMのinstanceViewのステータスを解釈する方法は?
- 20. 20世紀のYearMonthの日付を解釈する方法は?
- 21. git rebaseインタラクティブの後に "deleted by us"と解釈する方法
- 22. OracleのCLOB型でALL_TAB_COLS.DATA_LENGTH = 4000を解釈する方法は?
- 23. Variadicテンプレートの継承を解釈する方法は?
- 24. 関数インスタンスのbind/>> =を解釈する方法は?
- 25. 複数のif-elseを1行で解釈する方法は?
- 26. npmの構文を解釈する方法は?
- 27. Pythonコードを解釈するKivy Appを作る方法は?
- 28. JSON値をPythonで解釈する
- 29. シェルスクリプトを使って座標を解釈する方法は?
- 30. このデバッグエラーの解釈方法
私は同じ質問があるので、私は結論にどのように来るのか理解できません。レポートに自己相関があるかどうか出力をどのように変換するのですか? – hephestos