Mayank Lakhani
Mayank Lakhani

Reputation: 193

finding out nearest point to a given point

I have two matrix. G1

G1 =
   80.00
   79.43
   78.89
   78.38
   77.90
   77.45
   77.03
   76.63

and

G2 =     NaN       NaN       NaN
         NaN       NaN       NaN
         NaN       79.11     NaN
         NaN       78.64     NaN
         NaN       78.13     78.14
         77.46     NaN       77.66
         77.07     77.08     NaN
         76.74     NaN       NaN

I want to have result matrix which has a size of 8*1. Moreover, the G2 matrix elements shoud be compared with G1 and the nearest elements of G2 to G1 shoud be filled up in desired matrix. for example first one of G2 row has NaN, so it keep it NaN. 4th row of G2 has two values, this values should be compared with 4th element of G1 and nearest value shoud be filled up in the result matrix. When there is a single value than it shoud be remain like this only. When there are more than two values than the nearest value shoud be filled up in the matrix.

Below is the desired output. How to do it more dynamically. i just did it by manually.

  Result =   NaN
             NaN
             79.11
             78.64
             78.14
             77.46
             77.07
             76.744

Upvotes: 0

Views: 40

Answers (1)

Dan
Dan

Reputation: 45752

Try this:

dist = abs(bsxfun(@minus,G2,G1))
[~,col] = min(dist,[],2);
Result = diag(G2(:,col))

Upvotes: 3

Related Questions