How do you create an array with multiple rows in one line?

10 ビュー (過去 30 日間)
Perplumblewintz
Perplumblewintz 2020 年 12 月 17 日
コメント済み: Cris LaPierre 2020 年 12 月 17 日
I'm struggling with something that seems like it should be very simple. I'm trying to create an array of 3x3 matrices. I see that I can do something like:
A = [1,2,3; 4,5,6; 7,8,9]
A(:,:,2) = [9,8,7; 6,5,4; 3,2,1]
How do I do that in one line? I thought that something like this would work:
A = [[1,2,3; 4,5,6; 7,8,9]; [9,8,7; 6,5,4; 3,2,1]]
But that creates a 6x3 matrix. And this creates a 3x6 matrix:
A = [[1,2,3; 4,5,6; 7,8,9] [9,8,7; 6,5,4; 3,2,1]]
I've tried other variations and read documentation, but am at a loss here. Any help would be appreciated. Thanks!

採用された回答

Cris LaPierre
Cris LaPierre 2020 年 12 月 17 日
編集済み: Cris LaPierre 2020 年 12 月 17 日
I'm not aware of a shorthand way to do this. You can consult the documentation here.
One way could be to use reshape followed by a transpose. Not sure that really buys you anything, though.
A = pagetranspose(reshape([1,2,3, 4,5,6, 7,8,9, 9,8,7, 6,5,4, 3,2,1],3,3,2))
A =
A(:,:,1) = 1 2 3 4 5 6 7 8 9 A(:,:,2) = 9 8 7 6 5 4 3 2 1
Another option is to use cat to combine the two matrices in the 3rd dimension.
A2 = cat(3,[1,2,3; 4,5,6; 7,8,9], [9,8,7; 6,5,4; 3,2,1])
A2 =
A2(:,:,1) = 1 2 3 4 5 6 7 8 9 A2(:,:,2) = 9 8 7 6 5 4 3 2 1
  2 件のコメント
Perplumblewintz
Perplumblewintz 2020 年 12 月 17 日
Oh, wow. Okay, I guess I mmight be thinking about this wrong for matlab (as a programmer) :)
Thanks!
Cris LaPierre
Cris LaPierre 2020 年 12 月 17 日
It's just a matter of learning what is possible. There are shortcuts for creating 1D and 2D arrays, but not 3D.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

タグ

製品


リリース

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by