Reshape by rows instead of columns

74 vues (au cours des 30 derniers jours)
Adam Fitchett
Adam Fitchett le 8 Mar 2022
Commenté : Amr Aboughazala le 29 Août 2022
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?

Réponse acceptée

Max Alger-Meyer
Max Alger-Meyer le 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
  5 commentaires
Bruno Luong
Bruno Luong le 29 Août 2022
@Amr Aboughazala "taking the transpose won't give the first answer"
because you take transpose on a wrong reshape.
The correct one is
x = [0,1,2,3,4,5];
reshape(x,[2,3])' % size is [2,3] not [3,2]
ans = 3×2
0 1 2 3 4 5
It does fine.
Amr Aboughazala
Amr Aboughazala le 29 Août 2022
I just noticed that, thank you so much for your reply :)

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Produits


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by