2つの時系列波形がどの程度相互依存しているか、もしくは類似しているかを示すもの。 --- ベクトルの内積は,ベクトル同士が角度が近いとき($\theta$が0に近いとき)大きな値を示す. $\bf{a} \cdot \bf{b}=|\bf{a}||\bf{b}|\cos\theta$ 同じ長さ(次元)をもつベクトル同士であれば内積は簡単に計算できるが,ベクトルの長さが異なるケースもある.相互相関では,長さが異なる場合は短いベクトルに0を付加して長さを揃えて,ベクトルをずらしながら内積を計算していく.可能なシフトのうち内積が最大となるシフトを見つける. --- [www.slp.k.hosei.ac.jp/~itou/lecture/2011/DigitalData/06_text.pdf](http://www.slp.k.hosei.ac.jp/~itou/lecture/2011/DigitalData/06_text.pdf) $\newcommand{\bm}[1]{\boldsymbol{#1}}$ $cos \theta = \cfrac{\bm{a} \cdot \bm{b}}{||\bm{a}||||\bm{b}||}$ $cos\theta$は向きが同じときに最大で、似てないほど小さくなる。$cos\theta$を類似度として用いる。 ただし、ベクトル長を揃えた系列でなければ、内積やユークリッド距離を簡単に計算できない。 --- [numpy.correlate — NumPy v1.22 Manual](https://numpy.org/doc/stable/reference/generated/numpy.correlate.html) > numpy.correlateは、畳み込みを計算するためにFFTを使用しないので、大きな配列(すなわち、n = 1e5)では、パフォーマンスが遅くなることがあります; その場合、scipy.signal.correlateが望ましいかもしれません。 - 2つのベクトル長が同じ場合は`mode="valid"`を選ぶ。 - [numpy.convolve — NumPy v1.22 Manual](https://numpy.org/doc/stable/reference/generated/numpy.convolve.html#numpy.convolve) > The two arrays are of the same length, so there is only one position where they completely overlap: [scipy.signal.correlate — SciPy v1.8.0 Manual](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.correlate.html) --- [numpyとscipyとmatplotlibの相互相関算出方法について、誰も解説してくれないのでまとめる - Qiita](https://qiita.com/SHUsss/items/a357a33849d583093849)