how to compare two values that are repeated in two vectors?
6 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
giancarlo maldonado cardenas
il 2 Giu 2022
Modificato: giancarlo maldonado cardenas
il 6 Giu 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 Commenti
Image Analyst
il 2 Giu 2022
Modificato: Image Analyst
il 2 Giu 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)?
Risposta accettata
Voss
il 2 Giu 2022
Modificato: Voss
il 2 Giu 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 Commenti
Voss
il 5 Giu 2022
Modificato: Voss
il 5 Giu 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.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su LTE Toolbox in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!