"Row-wise" reshape of 3d matrix -> 2d matrix
7 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Oscar Frick
el 7 de Sept. de 2018
Comentada: Raymond MacNeil
el 13 de Mayo de 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
I know about
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 comentarios
Respuesta aceptada
Guillaume
el 7 de Sept. de 2018
You simply need a different permutation of the dimensions:
reshape(permute(M, [3 1 2]), [], size(M, 2))
2 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!