Compare row by row of two arrays and write in array, if there are matching values

조회 수: 13 (최근 30일)
Hey... how to find matching values between 3 arrays?
A=[1 2 0 3; 3 0 4 0; 6 7 0 0]; B=[1 8 0; 2 3 0 ; 6 1 8]; C=(1 3; 0 0; 5 6 7);
I want to find the values of matching values between those 3 arrays.
Result should be:
result=[1; 0; 6]
There will always be just one match out of these arrays. Therefore I will receive a 1x3 matrix.
0 should not be recognized as a match.
As you can see, the width of the rows is variable. The length of the array is the same for A, B and C.
I tried it with find in a for-loop, but got the matching of the whole arrays and not rows-specific.
Thanks,
Joshi

채택된 답변

Bob Thompson
Bob Thompson 2019년 8월 19일
편집: Bob Thompson 2019년 8월 19일
I think intersect is a much better choice here than find.
Because you are looking for specific row results I'm not sure how to do this without a for loop, but this is my idea.
A = [1 2 0 3; 3 0 4 0; 6 7 0 0];
B = [1 8 0; 2 3 0 ; 6 1 8];
C = [1 3; 0 0; 5 6];
result = zeros(size(A,1),1);
for i = 1:size(A,1)
tmp = intersect(A(i,:),B(i,:));
tmp = intersect(tmp,C(i,:));
if length(tmp)>1
tmp = tmp(tmp~=0);
end
result(i) = tmp;
end
  댓글 수: 2
Joshua Lindner
Joshua Lindner 2019년 8월 19일
Thanks for you reply!
But this just works for arrays of the same size. In my case I get an error...
Bob Thompson
Bob Thompson 2019년 8월 19일
Sorry, I had a typo.
if length(tmp)>1
Replace the line.

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by