Быстрая реализация в Mathematica для Position2D

Я ищу быструю реализацию в дальнейшем я назову его Position2D из-за отсутствия лучшего термина:

Position2D[ matrix, sub_matrix ]

, который находит местоположения sub_matrix внутри матрицы и возвращает верхний левая и нижняя правая строка / столбец совпадения.

Например, это:

Position2D[{
 {0, 1, 2, 3},
 {1, 2, 3, 4},
 {2, 3, 4, 5},
 {3, 4, 5, 6}
}, {
 {2, 3},
 {3, 4}
}]

должно вернуть следующее:

{
 {{1, 3}, {2, 4}},
 {{2, 2}, {3, 3}},
 {{3, 1}, {4, 2}} 
}

Он должен быть достаточно быстрым, чтобы быстро работать с матрицами 3000x2000 с субматрицами 100x100 . Для простоты достаточно рассматривать только целочисленные матрицы.

20
задан Arnoud Buzing 3 December 2011 в 01:37
поделиться