Скажем, у меня есть N-мерная матрица A
, которая может быть любого размера. Например:
A = rand([2,5,3]);
Я хочу вычислить все возможные попарные различия между элементами матрицы по заданному измерению. Например, если бы я хотел рассчитать различия по измерению 3, можно было бы создать такую матрицу:
B = cat(3, A(:,:,2) - A(:,:,1), A(:,:,3) - A(:,:,1), A(:,:,3) - A(:,:,2));
Однако я хочу, чтобы это могло работать в любом измерении с матрицей любого размера. Итак, в идеале я хотел бы либо создать функцию, которая принимает матрицу A
и вычисляет все попарные различия по измерению DIM
, либо найти встроенную функцию MATLAB, которая делает то же самое.
Функция diff
кажется полезной, но она только вычисляет различия между соседними элементами, а не все возможные различия.
Проводя исследование по этому вопросу, я нашел пара из сообщений о получении всех возможных различий, но большинство из них предназначены для элементов в векторе (и игнорируют проблему размерности). Кто-нибудь знает быстрое решение?