# Find multiple closest values in a matrix

6 views (last 30 days)
SA Yoganathan on 25 Aug 2015
Commented: SA Yoganathan on 26 Aug 2015
Hello everyone,
I have a matrix
a = [0.00000 -0.15593 -0.23176 -0.37512 -0.50185 -0.55736 -0.75122 -0.64952 -0.50185 -0.37520 -0.24170 -0.15590 -0.00000 0.15593 0.24762 0.37512 0.50185 0.68516 0.75120]
While reading the elements of matrix 'a', I want to do 'for loop' whenever the element value is close to 0, -0.25, +0.25, -0.5, 0.5, -0.75 and 0.75.
Thanks

#### 1 Comment

Walter Roberson on 25 Aug 2015
You have two -0.50185, each of which is "closest" to -0.5 . What is your desired behaviour in that case?

Walter Roberson on 25 Aug 2015
ua = unique(a);
closest_a = ua(interp1(ua,1:length(ua), [ 0, -0.25, +0.25, -0.5, 0.5, -0.75, 0.75], 'nearest'));
for K = 1 : length(a)
if ismember(a(K), closest_a)
... do whatever ...
end
end
If there were no duplicates then the code would be shorter and it would not be necessary to test ismember() inside the loop.

#### 1 Comment

SA Yoganathan on 26 Aug 2015
Thank you very much