Если вы не против использования J, вы можете узнать, равны ли две матрицы, с помощью оператора -:
(match).Например:
X =: 4 3 $ i.12
X
0 1 2
3 4 5
6 7 8
9 10 11
Y =: 4 3 $ (1+i.12)
Y
1 2 3
4 5 6
7 8 9
10 11 12
X -: X
1
X -: Y
0
Одна приятная особенность оператора сопоставления заключается в том, что вы можете использовать его для сравнения массивов произвольной размерности;если A
является массивом 3x3x4 и B
является массивом 2x1, то A-:B
возвращает 0
.
Чтобы узнать, является ли матрица подматрицей другой матрицы, вы можете использовать *Оператор 1011 * (член интервала) выглядит следующим образом:
X =: 2 2 $ 1 2 4 5
X
1 2
4 5
Y =: 4 3 $ (1+i.12)
Y
1 2 3
4 5 6
7 8 9
10 11 12
X E. Y
1 0 0
0 0 0
0 0 0
0 0 0
1 в верхнем левом углу результата означает, что часть Y, равная X, имеет данный пиксель в качестве верхнего левого угла.угол.Причина этого заключается в том, что может быть несколько перекрывающихся копий X, встроенных в Y, и только пометка одного пикселя позволяет увидеть местоположение каждой подходящей плитки.