How can I merge many rows of different lengths into a matrix?
    조회 수: 2 (최근 30일)
  
       이전 댓글 표시
    
Hi everyone! I encountered a problem in merging many rows of different lengths into a matrix, for example,
A=[1:2];
B=[3:7];
C=[1:10];
What I want to achieve is to have the following matrix:
D=[A;B;C]
% which does not work
% to be in the format of following
D=[1,2,0,0,0,0,0,0,0,0;
   3,4,5,6,7,0,0,0,0,0;
   1,2,3,4,5,6,7,8,9,10]
Does any one have a good way of filling zeros? The speed is also a concern as such operations would be repeated for millions of times .
Any help would be appreciated!
댓글 수: 0
채택된 답변
  Stephen23
      
      
 2018년 12월 14일
        >> C = {1:2,3:7,1:10};
>> L = cellfun('length',C);
>> M = zeros(numel(C),max(L));
>> for k = 1:numel(C), M(k,1:L(k)) = C{k}; end
>> M
M =
    1    2    0    0    0    0    0    0    0    0
    3    4    5    6    7    0    0    0    0    0
    1    2    3    4    5    6    7    8    9   10
댓글 수: 0
추가 답변 (1개)
  Omer Yasin Birey
      
 2018년 12월 14일
        Hi Rupeng, as far as I understand you want to work with arrays. So you can use this code below
A=[1:2];
B=[3:7];
C=[1:10];
dimAdjustforA = max(max(length(A),length(B)),length(C))-length(A);%you have to set the dimension
A = [A zeros(dimAdjustforA,1)'];
dimAdjustforB = length(A)-length(B)%again to make it same dimension with the maximum one
B = [B zeros(dimAdjustforB,1)'];
D = [A;B;C]
댓글 수: 0
참고 항목
카테고리
				Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


