Суммирование по конкретному измерению трехмерной матрицы в Matlab - PullRequest
0 голосов
/ 05 мая 2018

У меня есть 3D-матрица в Matlab размером NxMxD, и мне нужно сложить по определенному измерению:

x = rand(5,3,2);
sum1 = sum(x,1);
sum2 = sum(x,2);
sum3 = sum(x,3);

Я бы, очевидно, ожидал в случае 3, что результатом будет либо 2D-матрица, либо 3D-матрица с 1-м измерением длины 1. К сожалению, это не так.

sum1 и sum2 - это трехмерная матрица, размерность которой равна сумме длины 1, а sum3 - это двумерная матрица.

Я хотел бы иметь возможность получить sum1 и sum2 в качестве 2D-матрицы аналогичным образом, как вычисляется sum3. Можно ли это сделать, используя только сумму, или единственный способ - это использовать, например, функцию squeeze ())

1 Ответ

0 голосов
/ 05 мая 2018

Как говорит @Tommaso, третий вывод - 5x3x1, хотя, когда вы спрашиваете его размер, MATLAB сокращает конечные.

MATLAB, не может автоматически делать это в других местах, потому что это изменит матрицу / тензор, помните, что MATLAB «в первую очередь» для матриц.

Вектор 1xn не совпадает с вектором nx1 при выполнении матричных операций.

Tl; dr, вам придется использовать squeeze или reshape

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...