How to replace data in a matrix by comparing from another matrix?

2 vues (au cours des 30 derniers jours)
suchismita
suchismita le 5 Mai 2015
Commenté : suchismita le 5 Mai 2015
I have a matrix A,
[1 5
2 6
3 6
4 7
5 6]
and I have another matrix B as
[1 2
1 3
1 4
1 5
2 3
2 4
3 4
3 5
4 5]
now i want to compare B with a and i want to replace 2nd column of B with A data for example,
[1 5
1 5
1 5
1 5
2 6
2 6
3 6
3 6
4 7]
in first column when there is 1 it will take the value of matrix A's second column data as 5 and when first column is having 2 it will take the value of 2 from matrix A.
please please help me.

Réponse acceptée

David Sanchez
David Sanchez le 5 Mai 2015
for k=1:length(B)
x = A(:,1)==B(k,1);
B(k,2) = A(x,2);
end
B =
1 5
1 5
1 5
1 5
2 6
2 6
3 6
3 6
4 7
  2 commentaires
suchismita
suchismita le 5 Mai 2015
thank u so much....
Stephen23
Stephen23 le 5 Mai 2015
Andrei Bobrov's solution is much neater.

Connectez-vous pour commenter.

Plus de réponses (2)

Andrei Bobrov
Andrei Bobrov le 5 Mai 2015
Modifié(e) : Andrei Bobrov le 5 Mai 2015
[lo,ii] = ismember(B(:,1),A(:,1));
out = B;
out(lo,2) = A(ii(lo),2);
  3 commentaires
Andrei Bobrov
Andrei Bobrov le 5 Mai 2015
Hi Stephen! I corrected..
suchismita
suchismita le 5 Mai 2015
thank u so much.....

Connectez-vous pour commenter.


Nobel Mondal
Nobel Mondal le 5 Mai 2015
Assuming, the 'a' matrix has unique values in the first column
for bRow= 1:size(b, 1)
aRow = find(a(:,1)==b(bRow,1), 1);
if ~isempty(aRow)
b(thisrow,2) = a(aRow,2);
end
end

Catégories

En savoir plus sur Resizing and Reshaping 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