Merge matrices by matching first column values in MATLAB?
22 ビュー (過去 30 日間)
古いコメントを表示
I have two matrices A and B, where they share some common values in the first column. I would like to merge these into one matrix giving only the values they have in common in the first column along with their respective values in the other columns. For example
A= 4 5.3
5 7.3
8 2.5
9 4.7
B= 1 3.6 0.4
2 3.9 0.6
3 9.2 0.9
4 5.1 0.1
5 0.7 0.5
6 8.3 0.7
7 7.3 0.2
8 1.6 0.6
9 4.6 0.2
The output would be
C= 4 5.3 5.1 0.1
5 7.3 0.7 0.5
8 2.5 1.6 0.6
9 4.7 4.6 0.2
My actual data sets are much longer but this is the general idea.
Thanks
0 件のコメント
採用された回答
Robert
2016 年 7 月 6 日
A= [4 5.3
5 7.3
8 2.5
9 4.7];
B= [1 3.6 0.4
2 3.9 0.6
3 9.2 0.9
4 5.1 0.1
5 0.7 0.5
6 8.3 0.7
7 7.3 0.2
8 1.6 0.6
9 4.6 0.2];
[~,ia,ib] = intersect(A(:,1),B(:,1));
C = [A(ia,1:2),B(ib,2:3)]
1 件のコメント
Robert
2016 年 7 月 6 日
The difference between this answer and Azzi's is that this works even if not all values of the first column in A appear in the first column of B. Delete the last row of B to see the difference.
その他の回答 (1 件)
Azzi Abdelmalek
2016 年 7 月 6 日
A= [4 5.3
5 7.3
8 2.5
9 4.7]
B= [1 3.6 0.4
2 3.9 0.6
3 9.2 0.9
4 5.1 0.1
5 0.7 0.5
6 8.3 0.7
7 7.3 0.2
8 1.6 0.6
9 4.6 0.2]
B1=B(ismember(B(:,1),A(:,1)),:)
C=[A B1(:,2:3)]
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Resizing and Reshaping Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!