reshape a 3d matrix into 2d
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
konstantina vatavali
el 11 de Abr. de 2020
Comentada: Ameer Hamza
el 12 de Abr. de 2020
Hello, Im trying to convert a 3d matrix x(9,9,625) into a 2d x2(225,225) .
I want to put each (:,:,i) of x in order for the first 25 chunks and then change 'col' in the 3d.
for example if x (:,:,1) was [1,2,3 x(:,:,2) = [7,8,9 x(:,:,3) = [13,14,15 x(:,:,4) = [19,20,21
4,5,6] 10,11,12] 16,17,18] 22,23,24]
then x2 would be x2 = [1,2,3, 7,8,9
4,5,6, 10,11,12
13,14,15 ,19,20,21
16,17,18 , 22,23,24]
if we split it for each 2 chunks.
0 comentarios
Respuesta aceptada
Ameer Hamza
el 11 de Abr. de 2020
Editada: Ameer Hamza
el 11 de Abr. de 2020
% Example matrix
x(:,:,1) = [1 2 3; 4 5 6];
x(:,:,2) = [1 2 3; 4 5 6]+6;
x(:,:,3) = [1 2 3; 4 5 6]+12;
x(:,:,4) = [1 2 3; 4 5 6]+18;
n = sqrt(size(x,3));
x2 = mat2cell(x, size(x,1), size(x,2), ones(1,size(x,3)));
x2 = reshape(x2,n,n)';
x2 = cell2mat(x2);
x2 =
1 2 3 7 8 9
4 5 6 10 11 12
13 14 15 19 20 21
16 17 18 22 23 24
Example for another matrix x
% Example matrix
x(:,:,1) = [1 2 3; 4 5 6; 7 8 9];
x(:,:,2) = [1 2 3; 4 5 6; 7 8 9]+9;
x(:,:,3) = [1 2 3; 4 5 6; 7 8 9]+18;
x(:,:,4) = [1 2 3; 4 5 6; 7 8 9]+27;
x(:,:,5) = [1 2 3; 4 5 6; 7 8 9]+36;
x(:,:,6) = [1 2 3; 4 5 6; 7 8 9]+45;
x(:,:,7) = [1 2 3; 4 5 6; 7 8 9]+54;
x(:,:,8) = [1 2 3; 4 5 6; 7 8 9]+63;
x(:,:,9) = [1 2 3; 4 5 6; 7 8 9]+72;
n = sqrt(size(x,3));
x2 = mat2cell(x, size(x,1), size(x,2), ones(1,size(x,3)));
x2 = reshape(x2,n,n)';
x2 = cell2mat(x2);
x2 =
1 2 3 10 11 12 19 20 21
4 5 6 13 14 15 22 23 24
7 8 9 16 17 18 25 26 27
28 29 30 37 38 39 46 47 48
31 32 33 40 41 42 49 50 51
34 35 36 43 44 45 52 53 54
55 56 57 64 65 66 73 74 75
58 59 60 67 68 69 76 77 78
61 62 63 70 71 72 79 80 81
7 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Creating and Concatenating 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!