Filter löschen
Filter löschen

reshape and sum multi-dimensional matrix

3 Ansichten (letzte 30 Tage)
ehsan
ehsan am 18 Mai 2018
Bearbeitet: Jan am 28 Jun. 2018
Hi, I have a 20-by-30-by-40 matrix. I would like to sum each two page of the third dimension. In the end, I need to have a 20-by-30-by-20 matrix.
I appreciate if you could help me.

Akzeptierte Antwort

Stephen23
Stephen23 am 18 Mai 2018
Bearbeitet: Stephen23 am 18 Mai 2018
Where A is your array:
A(:,:,1:2:end) + A(:,:,2:2:end)

Weitere Antworten (2)

Sammit Jain
Sammit Jain am 18 Mai 2018
Hi, I think what you're trying to do can be accomplished without reshaping the multi-dimensional matrix.
% Initializing 20x30x40 matrix of random elements
X = rand(20,30,40);
% Splitting the matrix into 2 sets based on the alternating third dimension
% The two sets are of dimensions 20x30x20 each.
% Taking out odd elements of third dimension
setA = X(:,:,1:2:40);
% Taking out even elements of third dimension
setB = X(:,:,2:2:40)
% Adding the two sets A and B
result = setA+setB;
The key here is splitting the main matrix into two 'pages' that you actually want to add.
  1 Kommentar
ehsan
ehsan am 18 Mai 2018
Bearbeitet: ehsan am 28 Jun. 2018
Thanks for your explanation Sammit. Actually, both answers are correct.

Melden Sie sich an, um zu kommentieren.


Jan
Jan am 28 Jun. 2018
Bearbeitet: Jan am 28 Jun. 2018
Or:
squeeze(sum(reshape(A, 20, 30, 2, 20), 3))

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by