Replace elements between two matrices

조회 수: 2 (최근 30일)
Ismaeel
Ismaeel 2016년 12월 6일
편집: Ismaeel 2016년 12월 7일
I have two matrices A and B:
A= [8 1;
16 2];
B= [8 10;
16 5]
I want to replace any element in B that exist in the 1st column of A, by its corresponding value in the second column of A. The result should be:
C=[1 10;
2 5];
Thanks for help

채택된 답변

Image Analyst
Image Analyst 2016년 12월 7일
Try this:
A= [8 1;
16 2]
B= [8 10;
16 5]
% If A & B are integers
rowsToReplace = A(:, 1) == B(:, 1)
C = B; % Initialize C to B.
% Now, replace the rows that need replacing:
C(rowsToReplace, 1) = A(rowsToReplace, 2)
  댓글 수: 2
Ismaeel
Ismaeel 2016년 12월 7일
That is what I was looking for, thank you so much.
Ismaeel
Ismaeel 2016년 12월 7일
편집: Ismaeel 2016년 12월 7일
Image Analyst, sorry but how about if size(A)~=size(B)? I have a case in this pattern.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Chaya N
Chaya N 2016년 12월 7일
Try the setxor function. You may need to tweak the directionality of the inputs a bit, so use something like
C = setxor(A',B','rows')'
  댓글 수: 3
Image Analyst
Image Analyst 2016년 12월 7일
Ismael, this code:
A= [8 1;
16 2]
B= [8 10;
16 5]
C = setxor(A',B','rows')'
gives
A =
8 1
16 2
B =
8 10
16 5
C =
1 10
2 5
which is the C you originally asked for. Now you're giving a different desired value for C. Which is it?
Ismaeel
Ismaeel 2016년 12월 7일
편집: Ismaeel 2016년 12월 7일
That is true for the case when the first column in A and B are the same. How about if some elements of the 1st column of B are not similar to the elements in the 1st column of A. If, for instance, the element (1,1) in B which is =8 is any number except 8, I don't want to keep different elements and replace similars with their corresponding second column in A.
Simply,
if B(i,1)==A(i,1)
replace B(i,1) with A(i,2)
otherwise don't change

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Get Started with MATLAB에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by