reshape and sum multi-dimensional matrix

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.

 採用された回答

Stephen23
Stephen23 2018 年 5 月 18 日
編集済み: Stephen23 2018 年 5 月 18 日

1 投票

Where A is your array:
A(:,:,1:2:end) + A(:,:,2:2:end)

その他の回答 (2 件)

Sammit Jain
Sammit Jain 2018 年 5 月 18 日

1 投票

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 件のコメント

ehsan
ehsan 2018 年 5 月 18 日
編集済み: ehsan 2018 年 6 月 28 日
Thanks for your explanation Sammit. Actually, both answers are correct.

サインインしてコメントする。

Jan
Jan 2018 年 6 月 28 日
編集済み: Jan 2018 年 6 月 28 日

0 投票

Or:
squeeze(sum(reshape(A, 20, 30, 2, 20), 3))

カテゴリ

ヘルプ センター および File ExchangeCreating and Concatenating Matrices についてさらに検索

質問済み:

2018 年 5 月 18 日

編集済み:

Jan
2018 年 6 月 28 日

Community Treasure Hunt

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

Start Hunting!

Translated by