How to unnest nested cell arrays??
    조회 수: 29 (최근 30일)
  
       이전 댓글 표시
    
Dear all,
I have nested cell array as shown in the attached picture. I wanted to convert it into a Matrix but that doesn't work so easily using cell2mat. So I thought I could try to make them all the same size then I could open them up with cell2mat. To open them up I would take the length of my maximum array and add zeros to the rest of my arrays to have them the same size. I used this to do that:
maxLength = max(cellfun(@numel,A));  % A is the name of my cell array
out=(cellfun(@(x)cat(2,x,zeros(1,maxLength-length(x))),A,'UniformOutput',false)); %Filling the cells with zeros
But I don't get extra cells with zeros, instead I am getting one cell that is holding all the zeros, I have attached a picture of my result.
So my question is, what am I doing wrong? Or is there a different approach of turning my nested cell arrays into a matrix??
Thank You
댓글 수: 1
채택된 답변
  Cedric
      
      
 2017년 10월 14일
        
      편집: Cedric
      
      
 2017년 10월 14일
  
      It is a very good attempt. Here is an example that is almost what you did:
 >> A = {{5,6}; {7}; {8,9,3}}
 A =
  3×1 cell array
    {1×2 cell}
    {1×1 cell}
    {1×3 cell}
 >> maxLength = max(cellfun(@numel,A));
 >> result = cellfun( @(x) [cell2mat(x), zeros(1,maxLength-numel(x))], A, 'UniformOutput', false )
 result =
  3×1 cell array
    {1×3 double}
    {1×3 double}
    {1×3 double}
 >> result = vertcat( result{:} )
 result =
     5     6     0
     7     0     0
     8     9     3
You chose the other option to concatenate zeros to x which is a cell array, and you just forgot to convert the numeric array output'ed by ZEROS into a cell array with NUM2CELL.
The last operation develops result in a comma separated list of cells content (which are 1x3 numeric arrays given my approach), and concatenates it vertically.
추가 답변 (0개)
참고 항목
카테고리
				Help Center 및 File Exchange에서 Cell Arrays에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

