/ / Підсумовування першого 2D 3D матриці - масиви, MATLAB, матриця

Підведення підсумків першого 2D 3D матриці - масиви, matlab, матриця

Припустимо, у мене є 3D-матриця A розміру (1,2,3). Щось на зразок

A(:,:,1) =
[1 2]

A(:,:,2) =
[3 4]

A(:,:,3) =
[5 6]

Як я хотів би знайти 3 значення, які складають суму перших двох вимірів, наприклад.

sum(A(:,:,1)  = 3

Вищесказане працює, але коли спробую це для масиву з більшими розмірами, скажіть A є розміром (5,5,5), то я отримую 2D-масив як відповідь, але я хочу одне значення, підводячи підсумок значення цього масиву.

Відповіді:

2 для відповіді № 1

Спробуй reshape всередині твого sum щоб покласти кожну 2D матрицю в один стовпець:

sum(reshape(A,[],size(A,3)))

Наприклад:

>> A = randi(3,2,3,3)
A(:,:,1) =
1     3     1
2     2     1
A(:,:,2) =
1     2     2
1     2     3
A(:,:,3) =
2     2     1
3     3     3
>> sum(reshape(A,[],size(A,3)))
ans =
10    11    14

Наш ти міг зробити sum(sum(...)).

РЕДАГУВАТИ: Узагальнено з size(A,3).


1 для відповіді № 2

Matlab sum() функція має a sum(A,dim) форма дзвінка, яка дозволяє працювати у певному вимірі. Так що ти міг зробити sum(sum(A,1),2). Це дозволило б отримати матрицю "1-на-1-на-3"результат підсумовування вздовж перших двох вимірів. Ви можете узагальнити це на інші параметри та змінити вигляд, як вам здається. Виходячи з вашого опису, схоже, що проблема, з якою ви вступаєте, є такою sum() працює лише вздовж одного параметра за раз, і за замовчуванням - перше значення, а не всього, окрім останнього, в багатовимірному масиві.