Reshape by rows instead of columns

5 views (last 30 days)
I have a 1260 by 1 column vector (myVector) that I want to reshape to a 35*36 matrix. However, I can't figure out how to reshape it the particular way that I want:
reshape(myVector,35,36) takes each successive chunk of 35 elements from myVector and makes them the 36 columns of the new matrix. But I want to take each successive chunk of 36 elements from myVector and make each chunk the 35 rows of the new matrix. How do I do this?

Accepted Answer

Max Alger-Meyer
Max Alger-Meyer on 8 Mar 2022
If I understand you correctly, all you need to do is transpose the reshaped result:
vector = 1:16
vector = 1×16
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
array1 = reshape(vector,4,4)
array1 = 4×4
1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16
transpose(array1)
ans = 4×4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
  2 Comments
James Tursa
James Tursa on 8 Mar 2022
Note that you can transpose the result of reshape directly, e.g.,
myMatrix = reshape(myVector,36,35)';
If elements could be complex then use the .' operator instead of the ' operator:
myMatrix = reshape(myVector,36,35).';

Sign in to comment.

More Answers (0)

Products


Release

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by