Reputation: 193
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
Reputation: 45752
Try this:
dist = abs(bsxfun(@minus,G2,G1))
[~,col] = min(dist,[],2);
Result = diag(G2(:,col))
Upvotes: 3