numpy.correlate()
Функция numpy.correlate() вычисляет кросс-корреляцию двух одномерных последовательностей. Применяется в обработке сигналов для поиска сдвига между двумя записями или совпадения шаблона.
Сигнатура
numpy.correlate(a, v, mode='valid')
Параметры
a,v— одномерные входные массивы.mode— режим:'valid'— только полное перекрытие (по умолчанию);'same'— длина результата равнаmax(len(a), len(v));'full'— полная кросс-корреляция длинойlen(a)+len(v)-1.
Возвращаемое значение
ndarray со значениями кросс-корреляции.
Примеры
Пример 1. Базовый вызов в режиме full.
import numpy as np
a = np.array([1, 2, 3])
v = np.array([0, 1, 0.5])
print(np.correlate(a, v, mode='full'))
[0.5 2. 3.5 3. 0. ]
Пример 2. Режим valid.
a = np.array([1, 2, 3, 4, 5])
v = np.array([1, 0, -1])
print(np.correlate(a, v, mode='valid'))
[-2 -2 -2]
Пример 3. Поиск пика — точка совпадения шаблона.
signal = np.array([0, 0, 1, 2, 3, 2, 1, 0, 0])
pattern = np.array([1, 2, 3])
corr = np.correlate(signal, pattern, mode='valid')
print(corr)
print("Лучшее совпадение начинается с индекса:", np.argmax(corr))
[ 8 14 10 4 1 0 0]
Лучшее совпадение начинается с индекса: 1
Пример 4. Автокорреляция периодического сигнала.
t = np.arange(0, 2 * np.pi, np.pi / 8)
x = np.sin(t)
ac = np.correlate(x, x, mode='full')
print(np.round(ac, 2))
[-0. -0.38 -0.92 -1.41 -1.71 -1.71 -1.41 -0.92 -0.38 0. 0.38 0.92
1.41 1.71 1.71 1.41 0.92 0.38 -0. ]
Пример 5. Корреляция как мера схожести.
x = np.array([1, 2, 3, 4])
y = np.array([1, 2, 3, 4])
z = np.array([4, 3, 2, 1])
print(np.correlate(x, y), np.correlate(x, z))
[30] [20]
См. также
Примечание
Лицензия и источники
Техническое описание функции адаптировано из официальной документации NumPy (https://numpy.org/doc/stable/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.