n-dimensional matrix - Store the indexes of the n-th dimension in n-th cell
    9 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
I have a n-dimensional matrix M. Now I'm looking for a way to create a 1xn cell array, where the index vector of the n-th dimension of M is stored in the n-th cell.
So for example: If the size of M were 40x30x50x20, the resulting cell array should look like this:
myCell = {[1:40], [1:30], [1:50], [1:20]};
How would I do this?
0 comentarios
Respuesta aceptada
  fsgeek
      
 el 12 de Sept. de 2013
        
      Editada: fsgeek
      
 el 12 de Sept. de 2013
  
      If M is explicitly defined then could you do
vect = size(M);            % vect = [40 30 50 20] in your example of M
                           %{
dim = length(vect);          So that we know how many cells there will be.
                             For your example dim == 4;
                           %} 
myCell = cell(1, dim);     % Pre-allocate for speed (thanks for reminding me, Jan!)    
for i = 1:dim
    myCell{i} = 1:vect(i); % assign a 1 x vect(i) array to each cell
end
The value of myCell after running this code is:
>> myCell
myCell = 
      [1x40 double]    [1x30 double]    [1x50 double]    [1x20 double]
I hope this helps!
Louis
2 comentarios
  Jan
      
      
 el 12 de Sept. de 2013
				And for efficiency a pre-allocation is recommended:
myCell = cell(1, dim);
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!


