How to get the smallest difference(Array)
    15 views (last 30 days)
  
       Show older comments
    
>>The issue i'm having is that if there are two values of equal difference only the closest one is displayed. Can someone please correct my coding.
function[smallestPosition] = FindSmallestElevationChange(i,B)
E = [ 3 6 5 4 7 8 3 ; 5 7 6 2 3 1 7 ; 6 8 5 8 5 4 8 ; 7 4 9 7 6 5 3 ];
 *%B = 3 adjacent values e.g.. if I chose E(10), B = [ 4 2 8 ]
 %the smallest difference should be 4 and 8 which is (1 and 3) respectively
 %since there is a difference of 2 for both of them.*
   E(i);
[c index] = min(abs(B-E(i)));
the output given is only 1(which is 4)

[REVERTED, was edited away by the OP, Jan]
7 Comments
  Cedric
      
      
 on 17 Sep 2017
				
      Edited: Cedric
      
      
 on 17 Sep 2017
  
			Shivam Prasad, the least you can do if you don't need help anymore, is to accept the answer of whoever was nice enough to give you freely part of his/her time.
I accepted the answer from José-Luis (before Jan restored the original question and answered).
The question was originally titled "How to get the smallest difference(Array)" and it had the following picture attached:

Accepted Answer
  José-Luis
      
 on 31 Aug 2017
        bla = randi(50,10);
val = 25;
result = abs(bla-val);
result = result == min(result(:));
[xx,yy] = ndgrid(1:size(bla,1),1:size(bla,2));
idx_x = xx(result)
idx_y = yy(result)
0 Comments
More Answers (1)
  Jan
      
      
 on 17 Sep 2017
        
      Edited: Jan
      
      
 on 17 Sep 2017
  
      The question does not contain the detail, that the input is a matrix, but a scalar and a vector only. Then:
[c, index] = min(abs(Vec - E));
is almost a solution. Do it in two steps:
Dist = abs(Vec - E);
and then use this to determine the indices:
Dist == min(Dist)
0 Comments
See Also
Categories
				Find more on Image Processing Toolbox in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




