MATLAB: How to find the closest data row index

machine learningstatisticsStatistics and Machine Learning Toolbox

Input data (sort by time): M:
1.0
1.2
3.1
4.0
1.2
1.0
4.8
given data:
V:1.2
I want to find the most closer one in the input data
I use the below function:
[~,idx] = min(sum(bsxfun(@minus,M,V).^2,2));
M(idx,:)
But here, there two rows (duplicate data) row2 &row5, if this is the case, I want to pick the more recent row index i.e., row5 (but the present code giving row 2).

Best Answer

Hello Kanakaiah,
I think you're pretty much on the right track, though there's no need for bsxfun if you just want one index out. Since min will always return the index of the first element found, just flip it around before calling min:
dist = abs(A-V);
[~, revIdx] = min(dist(end:-1:1)); % Could also use flipud
idx = numel(A)-revIdx+1;
-Cam