How do you write code to get which of the entries stored in an array it is closest to for each data point?
For example:
array: [4 9 7 3 10 19 2 11]
and you want to find which entry each entry is closest to. So, in the above array, the answer would be:
[4 5 2 1 2 8 4 5]
(the number 4 is closest in value to the 4th entry in the array...the number 9 is closest in value to the 5th entry in the array...etc.)

댓글 수: 1

Jos (10584)
Jos (10584) 2017년 11월 29일
You should define " closest" more accurately! Why is 9 closer to 10 rather than 11? And I would argue that any number is closest to itself, so 1:8 would be my answer ;)

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

답변 (3개)

KSSV
KSSV 2017년 11월 29일
편집: KSSV 2017년 11월 29일

1 개 추천

Read about knnsearch.
A = [4 9 7 3 10 19 2 11] ;
B = [4 5 2 1 2 8 4 5] ;
idx = knnsearch(A',A','k',2) ;
iwant = idx(:,2)
Andrei Bobrov
Andrei Bobrov 2017년 11월 29일

0 개 추천

a = [4 9 7 3 10 19 2 11];
[~,iout] = min(abs(a(:)-a(:)')+diag(nan(numel(a),1)),[],2);
Roger Stafford
Roger Stafford 2017년 11월 29일

0 개 추천

Let 'a' be your array (row vector.)
n = size(a,2);
[t,p] = sort(a);
q = 1:n; q(p) = q;
t = diff(t);
t = [inf,t;t,inf];
[~,r] = min(t);
r = (1:n)+2*r-3;
p = p(r(q)); % p is the desired result

카테고리

도움말 센터File Exchange에서 Operators and Elementary Operations에 대해 자세히 알아보기

태그

질문:

2017년 11월 29일

댓글:

2017년 11월 29일

Community Treasure Hunt

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

Start Hunting!

Translated by