Чтение this и с попыткой np.correlate и cv2.matchTemplate У меня все еще есть вопрос, который я, похоже, не могу решить.Перекрестная корреляция множественных последовательностей, избегающих цикла
У меня есть два массива numpy, каждый из которых имеет форму (6000,50)
. 6000 последовательностей с каждыми 50 значениями. Теперь я хотел бы сделать кросс-корреляцию двух одномерных последовательностей этого массива для определения временного сдвига. Я попытался OpenCV кратко, но для меня это возвращает единственное число (я рассчитывать на самую высокую корреляцию), так что теперь я использую numpy.correlate так:
np.correlate(x[2500], y[2500], mode='same')
(В кросс-корреляции сюжета я не ищу для самого высокого пика, но я ищу для первого пика с использованием this см. график для примера)
Как и следовало ожидать, я хотел бы сделать это для всех последовательностей 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')
Почему вы хотите, чтобы избежать итераций? Даже если бы было что-то вроде того, чего вы хотите, оно просто упаковывает итерацию внутри. Сложность не будет ниже. – Skyler
@Skyler, я подумал, возможно, это возможно с каким-то математическим вычислением. – Mattijn
Ну, я вижу. Но я не знаю такой функции :-( – Skyler