Compare/match elements of 2 vector data

8 visualizaciones (últimos 30 días)
Bundit Buddhahai
Bundit Buddhahai el 6 de Abr. de 2014
Comentada: Bundit Buddhahai el 9 de Abr. de 2014
I would like to compare/match elements of 2 vector data, the goal is to select the elements which element-wise from the 2 vectors are different not greater than 3. Then output are the 2 new vector with have the same length and its elements are arranged in order. The size of the 2 vectors (before processed) is arbitrary.
Ex. A = [11 38 49 84 96 117 157 176 200]
B = [10 28 37 48 84 157 175 200]
Compare by element which abs(A(i) - B(j)) <= 3 Then the output should be
A_new = [11 38 49 84 157 176 200]
B_new = [10 37 48 84 157 175 200]
Can anyone guide me how to write MATLAB code for this problem? I used 2 nested loop but got stuck with empty set fault.
Thank you.

Respuesta aceptada

Jos (10584)
Jos (10584) el 8 de Abr. de 2014
A = [11 38 49 84 96 117 157 176 200]
B = [10 28 37 48 84 157 175 200]
D = abs(bsxfun(@minus, A(:), B(:).')) % find difference of all combinations of A and B
[iA,iB] = find(D <= 3) % which combos meet the criterion
A_new = A(iA)
B_new = B(iB)
  1 comentario
Bundit Buddhahai
Bundit Buddhahai el 9 de Abr. de 2014
Hi Jos(10584), Many thanks for your advice. I got my output when using bsxfun. It's very useful function. Regards, Bundit

Iniciar sesión para comentar.

Más respuestas (1)

Image Analyst
Image Analyst el 6 de Abr. de 2014
Seems ambiguous to me. What would you do in this case:
Ex. A = [11 38 39 84 96 117 157 176 200]
B = [10 28 37 48 84 157 175 200]
If the 38 moves to position 2 to be associated with the 38, then what does 39 get associated with? Is it compared to the 37, or with the 48 because the values "slide over."
What about these arrays:
Ex. A = [1 1 1 1 1 1 1]
B = [2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3]
  3 comentarios
Image Analyst
Image Analyst el 7 de Abr. de 2014
Where did 49 come from? That was NOT in my example. Anyway, why not just do a pair of nested for loops?
Bundit Buddhahai
Bundit Buddhahai el 8 de Abr. de 2014
The third element of A is '49' not '39' (as shown in the first quote). Each adjacent element has different value more than 3.

Iniciar sesión para comentar.

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by