Cell2Mat for cells with different dimensions
    14 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    EldaEbrithil
 el 16 de Ag. de 2020
  
    
    
    
    
    Comentada: Star Strider
      
      
 el 2 de Feb. de 2022
            Hi all 
i have a cell array like this: C={(21  24  47  89  57)' , ( 24  21)' , (16  87  47  89  90  99  182)'} i want to obtain a matrix like that: 
      21      24       16     
      24      21       87     
A=  47       0       47
       89      0        89
       57       0       90
        0        0        99
        0         0      182  
How can i do that?
Thank you for the help
Regards
1 comentario
  Sara Boznik
      
 el 16 de Ag. de 2020
				The idea is that you first find the longest vector, second step is that you creat matrix of all 0, so if you have n vectors and the longest vector contain m elements: A=zeros(m,n). Than you should transponse every vector to column vector. And write something like that: if exist C(i,j), A(i,j)=C(i,j).
But I don't know how to do it because I get error because of different dimension in C.
Hope that I somehow helped you.
Best of luck.
Respuesta aceptada
  Star Strider
      
      
 el 16 de Ag. de 2020
        
      Editada: Star Strider
      
      
 el 16 de Ag. de 2020
  
      Try this: 
C={[21  24  47  89  57]' , [24  21]' , [16  87  47  89  90  99  182]'}; 
rows = cellfun(@numel,C);
cols = size(C,2);
A = zeros(max(rows),cols);
for k = 1:cols
    A(1:rows(k),k) = C{k};
end
producing: 
A
A =
    21    24    16
    24    21    87
    47     0    47
    89     0    89
    57     0    90
     0     0    99
     0     0   182
EDIT — (16 Aug 2020 at 21:31)
Corrected the preallocation of ‘A’ to use the previously calculated values of ‘rows’ and ‘cols’.  Code otherwise unchanged.  
.
6 comentarios
Más respuestas (0)
Ver también
Categorías
				Más información sobre Data Type Identification 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!