reshape and sum multi-dimensional matrix

3 views (last 30 days)
ehsan
ehsan on 18 May 2018
Edited: Jan on 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.

Accepted Answer

Stephen23
Stephen23 on 18 May 2018
Edited: Stephen23 on 18 May 2018
Where A is your array:
A(:,:,1:2:end) + A(:,:,2:2:end)

More Answers (2)

Sammit Jain
Sammit Jain on 18 May 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 Comment
ehsan
ehsan on 18 May 2018
Edited: ehsan on 28 Jun 2018
Thanks for your explanation Sammit. Actually, both answers are correct.

Sign in to comment.


Jan
Jan on 28 Jun 2018
Edited: Jan on 28 Jun 2018
Or:
squeeze(sum(reshape(A, 20, 30, 2, 20), 3))

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!