reshape and sum multi-dimensional matrix

3 ビュー (過去 30 日間)
ehsan
ehsan 2018 年 5 月 18 日
編集済み: Jan 2018 年 6 月 28 日
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 日
Where A is your array:
A(:,:,1:2:end) + A(:,:,2:2:end)

その他の回答 (2 件)

Sammit Jain
Sammit Jain 2018 年 5 月 18 日
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 日
Or:
squeeze(sum(reshape(A, 20, 30, 2, 20), 3))

カテゴリ

Help Center および File ExchangeCreating and Concatenating Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by