How can I convert 2 column matrix to a cell array?
    조회 수: 11 (최근 30일)
  
       이전 댓글 표시
    
Is there a convenient way to convert a 2 column matrix into a cell array (without using nested for loops if possible)? 
The matrix looks like:

Can I make a matrix from the above matrix such that the rows and columns of the new matrix(or a cell array you can say) will be like you see below:
 the empty cells can be NAN and the filled cells are the values of the 3rd column of the old matrix.
the empty cells can be NAN and the filled cells are the values of the 3rd column of the old matrix. 댓글 수: 0
채택된 답변
  Walter Roberson
      
      
 2019년 12월 30일
        result = accumarray(matrix(:,[2 1]), matrix(:,3), [], @(v) {v}, {nan})
However I wonder if you would be better off using
result = sparse(matrix(:,2), matrix(:,1), matrix(:,3))
which would be a sparse numeric array instead of a cell array that takes up about 108 bytes per entry.
댓글 수: 3
  Andrei Bobrov
      
      
 2019년 12월 30일
				[i,g] = findgroups(matrix(:,2));
out = flip(accumarray([matrix(:,1),i],matrix(:,3)),1);
추가 답변 (2개)
  Andrei Bobrov
      
      
 2019년 12월 31일
        T = readtable('path\to\your\xls\file\matrix.xlsx','ReadVariableNames',0);
T.Var3 = str2double(T.Var3);
T = T(any(T{:,1:2} ~= 0,2),:);
M = T{:,:};
[i,g] = findgroups(M(:,2));
out = flip(accumarray([M(:,1),i],M(:,3)),1);
댓글 수: 3
  Andrei Bobrov
      
      
 2019년 12월 31일
				T = readtable('C:\Octavework\forums\xls\matrix_v2.xlsx','Range','A:C','ReadVariableNames',0);
T.Var3 = str2double(T.Var3);
T = T(any(T{:,1:2} ~= 0,2),:);
M = T{:,:};
i = findgroups(M(:,2));
out = flip(accumarray([M(:,1),i],M(:,3)),1);
참고 항목
카테고리
				Help Center 및 File Exchange에서 Matrices and Arrays에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!







