Прочитав это и попробовав np.correlate и cv2.matchTemplate, у меня все еще есть вопрос, который я, кажется, не могу решать.
У меня есть два массива numpy, каждый с формой (6000,50)
. 6000 последовательностей с каждыми 50 значениями. Теперь я хотел бы сделать взаимную корреляцию двух одномерных последовательностей этого массива, чтобы обнаружить сдвиг во времени. Я кратко попробовал openCV, но для меня это возвращает одно число (я ожидаю наивысшую корреляцию), поэтому теперь я использую numpy.correlate следующим образом:
np.correlate(x[2500], y[2500], mode='same')
(На графике взаимной корреляции я не ищу самый высокий пик, а ищу первый пик, используя это. Пример см. на графике)
Как и следовало ожидать, я хотел бы сделать это для всех 6000 последовательностей, но надеясь избежать повторения. Я надеялся, что это сработает:
np.correlate(x, y, mode='same')
Но это дает мне следующую ошибку: ValueError: object too deep for desired array
.
Есть ли какие-либо изменения, которые возможны с NumPy или OpenCV. Или мне придется сделать это так :(
for i in range(x.shape[0]):
np.correlate(x[i], y[i], mode='same')