cell to double with mismatched dimensions
    3 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Jonathan Soucy
 el 29 de Ag. de 2016
  
    
    
    
    
    Comentada: Jonathan Soucy
 el 29 de Ag. de 2016
            Input:
a = cell(3,1);
a{1,1} = [1 2 3];
a{2,1} = [1 2 3 4];
a{3,1} = [1 2 3 4 5];
Desired output:
b = [[1 2 3 0 0];[1 2 3 4 0];[1 2 3 4 5]];
What would be the best way to get this output from this input?
0 comentarios
Respuesta aceptada
  Geoff Hayes
      
      
 el 29 de Ag. de 2016
        
      Editada: Geoff Hayes
      
      
 el 29 de Ag. de 2016
  
      Jonathan - one way would be to use cellfun to apply a function to each element of your cell array padding each with zeros so that all arrays are of the same length. For example, we can get the maximum length as
 maxLength = max(cellfun(@(x)length(x),a));
We would then use cellfun again to pad the arrays with zeros using repmat (which just repeats a matrix) as
 aPadded = cellfun(@(x)[x repmat(0,1, maxLength - length(x))],a,'UniformOutput',false);
 b = cell2mat(aPadded);
Try the above and see what happens!
1 comentario
Más respuestas (0)
Ver también
Categorías
				Más información sobre Matrices and Arrays 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!

