MATLAB: How to get nearest values in matrix and save indexes of these values

arrayindexindexingMATLABmatrix manipulation

I have values saved as pi=[5 10 15].
And I have another values saved in puk, which is 401×1 double.
I need to find values in puk which are nearest to the values of pi, and as result I need to have indexes of that values in puk.
So I do not know how to search for nearest values in puk? And how to get indexes of these values?

Best Answer

  • >> X = [5,10,15];
    >> Y = 0:7/5:30;
    >> [~,Z] = min(abs(X-Y(:))) % the indices of the closest values:
    Z =
    5 8 12
    >> Y(Z) % the corresponding values in Y:
    ans =
    5.6 9.8 15.4
    For MATLAB versions before R2016b you will need to use bsxfun:
    [~,Z] = min(abs(bsxfun(@minus,X,Y(:))))