Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Hot to find the matched values between two vectors and also related indeces

Asked by Juster on 17 Jun 2012

Good evening to all,

I have two vectors, for example:

a = [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27]; b= [0 8 17 25];

what I would find are the indices related the vector 'a' with the same value of 'b'...like for example in this case 1 9 18 26.

Thanks in advance.

0 Comments

Juster

Products

No products are associated with this question.

3 Answers

Answer by Juster on 18 Jun 2012
Accepted answer

Any answer please?

Thanks

3 Comments

per isakson on 18 Jun 2012

The proposed solution, ismember, works with whole numbers.

With floating point numbers rounding comes in and it's a different problem.

Did you search the File Exchange?

Jan Simon on 18 Jun 2012

Look for Bruno's "ismemberf" in the FEX.

Juster on 20 Jun 2012

Hello Jam, I solved thanks to the 'ismemberf' function.

Best regards.

Juster
Answer by Andrei Bobrov on 17 Jun 2012
[idx,loc] = ismember(b,a);
out = loc(idx);

ADD after Knot's answer

out = find(any(abs(bsxfun(@minus,a,b.')) < eps(100)));

1 Comment

Juster on 18 Jun 2012

Hi Andrei I send you a personal message.

Thanks

Andrei Bobrov
Answer by Juster on 17 Jun 2012

I tried it but with microsecond order it did'n work.

In fact if you try with :

a = [0:10e-6:280e-6]; b = [0 80e-6 170e-6 250e-6]; [idx,loc] = ismember(b,a); out = loc(idx);

I don't got the right values of indices.

0 Comments

Juster

Contact us