how to compare two values that are repeated in two vectors?
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
giancarlo maldonado cardenas
am 2 Jun. 2022
Bearbeitet: giancarlo maldonado cardenas
am 6 Jun. 2022
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 Kommentare
Image Analyst
am 2 Jun. 2022
Bearbeitet: Image Analyst
am 2 Jun. 2022
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)?
Akzeptierte Antwort
Voss
am 2 Jun. 2022
Bearbeitet: Voss
am 2 Jun. 2022
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 Kommentare
Voss
am 5 Jun. 2022
Bearbeitet: Voss
am 5 Jun. 2022
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.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu LTE Toolbox finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!