how to compare two values that are repeated in two vectors?
조회 수: 4 (최근 30일)
이전 댓글 표시
giancarlo maldonado cardenas
2022년 6월 2일
편집: giancarlo maldonado cardenas
2022년 6월 6일
Hello everyone, I'm new to matlab, I wanted to know how I can compare 2 values that are repeated between two vectors, I'll explain myself better, for example I have these two vectors.
A = [10 56 34 11 34 ];
B = [10 56 34 11 ];
Now I need to compare element by element, I mean...
vector B = [(10) 56 34 11]; element 10 is repeated in vector A? No then it is assigned the number 1.
vector B = [10 (56) 34 11 ]; element 56 is repeated in vector A? No then it is assigned the number 1.
vector B = [10 56 (34) 11 ]; element 34 is repeated in vector A? Yes! then it is assigned the number 0.
vector B = [10 56 34 (11) ]; element 34 is repeated in vector A? Yes! then it is assigned the number 1.
the result has to be an array, equal to this.
result= [10 1
56 1
34 0
11 1]
any help will be very helpful.
댓글 수: 2
Image Analyst
2022년 6월 2일
편집: Image Analyst
2022년 6월 2일
What if the numbers are not in the same index in the two vectors, like
A = [10 56 34 11 34 ];
B = [11 10 56 34 5 ];
are the 10, 56, and 34 repeated in B? What's your definition of repeated?
And is this your homework (sounds like it)?
채택된 답변
Voss
2022년 6월 2일
편집: Voss
2022년 6월 2일
A = [10 56 34 11 34 ];
B = [10 56 34 11 ];
result = [B.' sum(A==B.',2)<=1]
Breaking that expression down:
A==B.' % compare each element of A to every element of B
sum(A==B.',2) % sum each row to get the number of occurrences in A of each element of B
sum(A==B.',2)<=1 % if the number of occurrences is NOT 2 or more, that's a 1 in the result, otherwise a 0
댓글 수: 2
Voss
2022년 6월 5일
편집: Voss
2022년 6월 5일
I don't understand what you mean by "if label 0 is repeated, if label 1 is not repeated, but this label can also be 0 with a probability of 10%", but here is how you can perform the task from the original question using a for loop:
A = [10 56 34 11 34 ];
B = [10 56 34 11 ];
result = [B.' zeros(numel(B),1)];
for ii = 1:numel(B)
result(ii,2) = nnz(A==B(ii))<=1;
end
disp(result);
Maybe that can be of use in your actual task.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Run Unit Tests에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!