Borrar filtros
Borrar filtros

Change the dimension of an output matrix

5 visualizaciones (últimos 30 días)
Amine Ben Ayara
Amine Ben Ayara el 11 de Abr. de 2016
Comentada: Jan el 17 de Abr. de 2016
I have an output matrix of (5*5*44040) dimension. I would like to convert it into 1 dimension so basically all the (5*5) are stacked up and the final matrix is 220200 row. Any ideas? Thank you guys.

Respuestas (2)

Jan
Jan el 11 de Abr. de 2016
Editada: Jan el 17 de Abr. de 2016
I guess, that you either want a simple:
out = in(:);
Or:
out = reshape(permute(in, [2,1,3]), [], 1);
It depends on what "all the (5*5) are stacked up" exactly means.
  2 comentarios
Amine Ben Ayara
Amine Ben Ayara el 12 de Abr. de 2016
Good morning Jan, Thank you for the reply. The matrix that I currently have is ( 5x5x44040), so I basically have 44040 matrices of five by five dimensions. I want them imported to excel as they are, so that's why I thought of stacking all these matrices in order to fit an excel sheet format (220200 rows total).
Jan
Jan el 17 de Abr. de 2016
@Amine Ben Ayara: So please give a meaningful example. You can "stack" the 5x5 blocks row-wise or columns-wise. I've posted code for both versions. Does one of them work as you want? If not, please post an example with a shortwer 2x2x3 matrix.

Iniciar sesión para comentar.


Stephen23
Stephen23 el 11 de Abr. de 2016
Editada: Stephen23 el 12 de Abr. de 2016
You can use permute and reshape:
>> inp(:,:,3) = [0,1;2,3]; % page 3
>> inp(:,:,2) = [4,5;6,7]; % page 2
>> inp(:,:,1) = [8,9;Inf,NaN] % page 1
inp(:,:,1) =
8 9
Inf NaN
inp(:,:,2) =
4 5
6 7
inp(:,:,3) =
0 1
2 3
>> out = reshape(permute(inp,[1,3,2]),[],2)
out =
8 9 % page 1
Inf NaN % page 1
4 5 % page 2
6 7 % page 2
0 1 % page 3
2 3 % page 3
  2 comentarios
Amine Ben Ayara
Amine Ben Ayara el 11 de Abr. de 2016
Stephen, in the example you used, the 3 matrices are (2*2), and I see that you have the final ouptut (out) in the order you wanted[1,3,2]; in my case I have 14680 of (5*5) matrices. They are stored in a 3D matrix output, how do I have to modify what you wrote to get one matrix of stacked up row? Thanks
Stephen23
Stephen23 el 11 de Abr. de 2016
Editada: Stephen23 el 11 de Abr. de 2016
@Amine Ben Ayara: note that the output order is actually 1,2,3,4,..., because I presumed that you wanted your matrices arranged sequentially like this. The values [1,3,2] are just used to rearrange the array dimensions, not the output order. (notice that your array has three dimensions, and my array has three dimensions, and these are what are rearranged). In any case, you would only need to change the final reshape size, like this:
reshape(permute(inp,[1,3,2]),[],5)
^ to match the matrix size

Iniciar sesión para comentar.

Categorías

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

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by