Merge vector and matrix with duplicated common values
조회 수: 2 (최근 30일)
이전 댓글 표시
I have a large size of matrix and here is the sample. I have an another vector,B.
A =
1 1 2 3 …
1 2 3 5
1 3 4 2
2 4 5 5
2 5 1 6
2 6 4 3
3 7 5 1
3 7 3 2
3 8 2 1
4 9 5 4
4 9 6 1
4 0 2 5
...
B =
1
2
1
1
I would like to merge the vector and the matrix by matching first column of A and the vector B. Because there are multiple rows with the each value of first column (e.g., 4 rows for value 1, 3 rows of value 2 and so on), all of rows for each value should be merged for a new dataset (C as below), and duplicated value in vector B (as shown, 1 is duplicated), it seems to be challenging.
Here is what I want to have
C =
1 1 2 3
1 2 3 5
1 3 4 2
2 4 5 5
2 5 1 6
2 6 4 3
1 1 2 3
1 2 3 5
1 3 4 2
1 1 2 3
1 2 3 5
1 3 4 2
댓글 수: 5
채택된 답변
Stephen23
2018년 5월 6일
편집: Stephen23
2018년 5월 6일
>> A = [1,1,2,3;1,2,3,5;1,3,4,2;2,4,5,5;2,5,1,6;2,6,4,3;3,7,5,1;3,7,3,2;3,8,2,1;4,9,5,4;4,9,6,1;4,0,2,5];
>> B = [1;2;1;1];
>> R = 1:size(A,1);
>> Z = accumarray(A(:,1),R.',[],@(r){A(r,:)});
>> C = vertcat(Z{B})
C =
1 1 2 3
1 2 3 5
1 3 4 2
2 4 5 5
2 5 1 6
2 6 4 3
1 1 2 3
1 2 3 5
1 3 4 2
1 1 2 3
1 2 3 5
1 3 4 2
댓글 수: 0
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!