Вот одна строка с заданной матрицей A
:
result = -squeeze(diff(sum(reshape(A, [50 2 100]), 1), 1, 2)).';
Как это работает:
Сначала преобразовать данные в 50-матрица 2 на 100, где значения в левой половине каждой матрицы находятся в столбце 1, а значения в правой половине каждой матрицы - в столбце 2. Затем примените sum
вниз к каждому столбцу, чтобыполучить матрицу 1 на 2 на 100.Затем вы можете взять разницу между столбцами с помощью diff
, хотя это вычитает левый столбец справа, поэтому вы должны добавить минус, чтобы отменить результат.Результирующая матрица 1 на 1 на 100 может быть свернута в вектор-столбец 100 на 1 с squeeze
, и это может быть транспонировано в вектор строки,В качестве альтернативы вы можете использовать другой reshape
вместо squeeze
и транспонировать:
result = -reshape(diff(sum(reshape(A, [50 2 100]), 1), 1, 2), [1 100]);