Reshape matrix with multiple columns into 2 columns

2 visualizaciones (últimos 30 días)
lim xiang
lim xiang el 10 de Mzo. de 2022
Editada: Stephen23 el 10 de Mzo. de 2022
Noticed that matlab has function of reshaping matrix into specific size, but is it possible to move 2 by 2 columns, for exapmle, 3 & 4th columns below 1 & 2nd columns, so far so on?
From A to B:
A = [1 2 3 4;5 6 7 8;9 10 11 12]
B = [1 2;5 6;9 10;3 4;7 8;11 12]
Thank you =]

Respuesta aceptada

KSSV
KSSV el 10 de Mzo. de 2022
A = [1 2 3 4;5 6 7 8;9 10 11 12]
B = [1 2;5 6;9 10;3 4;7 8;11 12]
iwant = [A(:,1:2) ; A(:,3:4)]
  1 comentario
lim xiang
lim xiang el 10 de Mzo. de 2022
Hi, thank you very much for your reply, realized that I can add a loop to group multiple columns of matrix

Iniciar sesión para comentar.

Más respuestas (1)

Stephen23
Stephen23 el 10 de Mzo. de 2022
Editada: Stephen23 el 10 de Mzo. de 2022
Of course, here are two general solutions.
A = [1,2,3,4;5,6,7,8;9,10,11,12]
A = 3×4
1 2 3 4 5 6 7 8 9 10 11 12
B = [1,2;5,6;9,10;3,4;7,8;11,12] % desired output
B = 6×2
1 2 5 6 9 10 3 4 7 8 11 12
Method one: MAT2CELL and concatentation:
C = mat2cell(A,3,[2,2]);
B = vertcat(C{:})
B = 6×2
1 2 5 6 9 10 3 4 7 8 11 12
Method two: use RESHAPE and PERMUTE.
B = reshape(permute(reshape(A.',2,2,3),[1,3,2]),2,[]).'
B = 6×2
1 2 5 6 9 10 3 4 7 8 11 12
You do not need to use a loop!

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by