Compare two arrays of different length

2 views (last 30 days)
I have two arrays. Lets say A = [1 5 7 10 14 17 19 22 25 26 29], B= [2 7 12 18 23 ] I want to find out the values / positions in A which are nearest to every value of B.
P.S : The resulting array should have the same length as B. Any suggestions are welcome.
Thanks

Accepted Answer

Walter Roberson
Walter Roberson on 18 Dec 2012
[junk, Aidx] = min(abs(bsxfun(@minus,A.',B)));
  3 Comments
Jan
Jan on 18 Dec 2012
@Joe: Simply try it by splitting into parts:
A
C1 = A.'
C2 = bsxfun(@mtimes, C1, B)
C3 = abs(C2)
[C4, C5] = min(C3)
Look in the documentation for each command:
help transpose
help bsxfun
help mtimes
help abs
help min
Or read the more exhaustive documentation by replacing "help" with "doc".
Walter Roberson
Walter Roberson on 18 Dec 2012
@minus rather than @mtimes, but yes.

Sign in to comment.

More Answers (1)

kate hughes
kate hughes on 21 Oct 2014
Just to be clear this doesn't work on matrices or arrays of different size, does anyone know what does?

Community Treasure Hunt

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

Start Hunting!