Reshaping a 2 d matrix into a 3 d matrix row wise.

1 view (last 30 days)
Russ
Russ on 21 Feb 2020
Commented: Russ on 21 Feb 2020
Hello, and thanks for taking the time to read this:
I have a 100 x 99 matrix of ratings. I would like to reshape the matrix into a 9x11x100 array where the first row represents the first 9 horizsontal items of the first row. Byu way of a smaller example, imagine the data were:
7 6 5 4 5 6
1 5 6 6 6 2
1 6 6 6 6 1
5 5 6 6 7 2
I would like the result to be:
765
456
156
662
556
672
Can anyone please help with this?

Accepted Answer

the cyclist
the cyclist on 21 Feb 2020
Edited: the cyclist on 21 Feb 2020
For your small example, if A is your original matrix, then
permute(reshape(A',3,2,[]),[2 1 3])
For the larger one,
permute(reshape(A',9,11,[]),[2 1 3])
  3 Comments
Russ
Russ on 21 Feb 2020
Yep, now I understand where I went wrong. The first row was supposed to be the first 11 items, not the first 9 items. Thanks so much for solving this problem!

Sign in to comment.

More Answers (1)

Daniel Vieira
Daniel Vieira on 21 Feb 2020
A=randi(10,100,99); % example of what your matrix might be
B=permute(reshape(A',9,11,[]),[2 1 3]) % solution
  1 Comment
Russ
Russ on 21 Feb 2020
Thanks! The following alternative seemed to do the trick.
permute(reshape(A', 11,9,[]), [2 1 3])
Thanks!
Russ

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!