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.