Change the dimension of an output matrix
    7 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
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.
0 comentarios
Respuestas (2)
  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
  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.
  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
  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
Ver también
Categorías
				Más información sobre Logical 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!