# "Row-wise" reshape of 3d matrix -> 2d matrix

22 vues (au cours des 30 derniers jours)
Oscar Frick le 7 Sep 2018
Commenté : Raymond MacNeil le 13 Mai 2020
I need to do a reshape of a 3d matrix to a 2d matrix, but where first row of each matrix along the 3d dimension corresponds to the first "set" of rows in the finished 2d matrix.
For example, lets say I have a matrix like this:
M(:,:,1) = [
111 121
211 221]
M(:,:,2) = [
112 122
212 222]
M(:,:,3) = [
113 123
213 223]
I want it to be reshaped into
M_Reshaped
111 121
112 122
113 123
211 221
212 222
213 223
reshape(permute(M,[1 3 2]), [], 3, 1);
But that simply stacks each matrix along the 3d dimension on top of each other, which is not what I want to achieve. I could do it in a loop, but I've got a feeling there's a more elegant and efficient way that I have not managed to figure out.
##### 0 commentairesAfficher -2 commentaires plus anciensMasquer -2 commentaires plus anciens

Connectez-vous pour commenter.

### Réponse acceptée

Guillaume le 7 Sep 2018
You simply need a different permutation of the dimensions:
reshape(permute(M, [3 1 2]), [], size(M, 2))
##### 2 commentairesAfficher AucuneMasquer Aucune
Oscar Frick le 7 Sep 2018
I clearly need a better feeling for how the permute + reshape works, thanks!
Raymond MacNeil le 13 Mai 2020
Good question, Oscar.

Connectez-vous pour commenter.

### Catégories

En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by