scipy.signal.

correlation_lags#

scipy.signal.correlation_lags(in1_len, in2_len, mode='full')[источник]#

Вычисляет массив индексов задержки/смещения для 1D взаимной корреляции.

Параметры:
in1_lenint

Размер первого входа.

in2_lenint

Размер второго входа.

modestr {‘full’, ‘valid’, ‘same’}, необязательный

Строка, указывающая размер вывода. См. документацию correlate для получения дополнительной информации.

Возвращает:
lagsмассив

Возвращает массив, содержащий индексы задержки/смещения взаимной корреляции. Индексы можно индексировать с помощью np.argmax корреляции, чтобы вернуть задержку/смещение.

Смотрите также

correlate

Вычислить N-мерную кросс-корреляцию.

Примечания

Взаимная корреляция для непрерывных функций \(f\) и \(g\) определяется как:

\[\left ( f\star g \right )\left ( \tau \right ) \triangleq \int_{t_0}^{t_0 +T} \overline{f\left ( t \right )}g\left ( t+\tau \right )dt\]

Где \(\tau\) определяется как смещение, также известное как лаг.

Взаимная корреляция для дискретных функций \(f\) и \(g\) определяется как:

\[\left ( f\star g \right )\left [ n \right ] \triangleq \sum_{-\infty}^{\infty} \overline{f\left [ m \right ]}g\left [ m+n \right ]\]

Где \(n\) — это лаг.

Примеры

Взаимная корреляция сигнала с самим собой с временной задержкой.

>>> import numpy as np
>>> from scipy import signal
>>> rng = np.random.default_rng()
>>> x = rng.standard_normal(1000)
>>> y = np.concatenate([rng.standard_normal(100), x])
>>> correlation = signal.correlate(x, y, mode="full")
>>> lags = signal.correlation_lags(x.size, y.size, mode="full")
>>> lag = lags[np.argmax(correlation)]