convert a 3D matrix to a 2D matrix

2 ビュー (過去 30 日間)
Ara Jo
Ara Jo 2020 年 9 月 23 日
コメント済み: madhan ravi 2020 年 9 月 23 日
Hello,
I'm trying to convert a A by B by C matrix (3D) into a A*C by B matrix (2D). But I need the column (with A*C elements) to be not stacked, but alternated. To explain,
I would like to convert a 2 by 2 by 3 matrix X:
val(:,:,1) =
1 2
1 2
val(:,:,2) =
2 3
2 3
val(:,:,3) =
3 4
3 4
into 2*3 by 2 matrix:
[1 2
2 3
3 4
1 2
2 3
3 4]
I have tried:
X1=permute(X,[1 3 2]);
X2=reshape(X1,[6,2]);
but it generates:
X2 =
1 2
1 2
2 3
2 3
3 4
3 4
which is NOT what I want.
Is there a way to do this? Any advice appreciated!

採用された回答

madhan ravi
madhan ravi 2020 年 9 月 23 日
reshape(permute(val, [2, 1, 3]), size(val, 2), []).'
  2 件のコメント
Ara Jo
Ara Jo 2020 年 9 月 23 日
But this generates X2, which is not what I'm trying to get?
madhan ravi
madhan ravi 2020 年 9 月 23 日
X2 = reshape(permute(val, [3, 1, 2]), [], size(val, 2))

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

その他の回答 (1 件)

KSSV
KSSV 2020 年 9 月 23 日
iwant = X2 ;
iwant(1:2:end,:) = X2(1:3,:) ;
iwant(2:2:end,:) = X2(4:end,:) ;

カテゴリ

Help Center および File ExchangePulse width modulation (PWM) についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by