Effacer les filtres
Effacer les filtres

How to join two matrices based on similar array in each

1 vue (au cours des 30 derniers jours)
Amy Xu
Amy Xu le 16 Avr 2017
Modifié(e) : the cyclist le 16 Avr 2017
Matrix A as follows:
A = [
1 35 24 234 243
2 34 234 2 234
2 34 234 2 234
3 34 234 234 12
4 32 324 243 85
4 32 324 243 85
4 32 324 243 85
5 43 234 24 56
5 43 234 24 56
];
Matrix B as follows:
B = [43 65 1
45 546 5
43 6456 2
34 534 3
53 46 4
];
Based on the similar array in column 3 of matrix b and column 1 in matrix A, I want to joint these to matrix.
C = [
43 65 1 35 24 234 243
45 546 5 34 234 2 234
43 6456 2 34 234 2 234
34 534 3 34 234 234 12
53 46 4 32 324 243 85
];

Réponse acceptée

the cyclist
the cyclist le 16 Avr 2017
Modifié(e) : the cyclist le 16 Avr 2017
Here is one way:
uniqueA = unique(A,'rows');
[~,idx] = ismember(B(:,3),uniqueA(:,1));
C = [B,uniqueA(idx,2:end)];
I am making a couple assumptions here, based on your one example:
  • The rows in A with the same values in the first column are also identical throughout.
  • Every value in B(:,3) is represented in A(:,1)

Plus de réponses (1)

Image Analyst
Image Analyst le 16 Avr 2017
I'm not really sure of your rule about "similar", but this seems to give you the output you gave:
A = [
1 35 24 234 243
2 34 234 2 234
2 34 234 2 234
3 34 234 234 12
4 32 324 243 85
4 32 324 243 85
4 32 324 243 85
5 43 234 24 56
5 43 234 24 56
]
[rowsA, columnsA] = size(A)
% Matrix B as follows:
B = [43 65 1
45 546 5
43 6456 2
34 534 3
53 46 4
]
[rowsB, columnsB] = size(B)
C = A(1:rowsB, 2:end); % Initialize.
C = [B C]

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by