# How to get the smallest difference(Array)

조회 수: 39(최근 30일)
Shivam Prasad 2017년 8월 31일
편집: Cedric Wannaz 2017년 9월 17일
>>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표시 이전 댓글 수: 6숨기기 이전 댓글 수: 6
Jan 2017년 9월 17일
편집: Jan 2017년 9월 17일
I have reverted the question. Please, Shivam Prasad, do not remove the question after somebody has spent the time to provide an answer.

댓글을 달려면 로그인하십시오.

### 채택된 답변

José-Luis 2017년 8월 31일
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)

댓글을 달려면 로그인하십시오.

### 추가 답변(1개)

Jan 2017년 9월 17일
편집: Jan 2017년 9월 17일
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)

댓글을 달려면 로그인하십시오.

### 범주

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by