How to find the indices that a point lays between?
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have a vector X and a vector Y with 112 points. See picture above, the points are depected with a cross symbol.
There is a point A in the position where the arrow points out that I know its value (xA,yA).
How can I find the points that this point A lays between? For example here the answer would be 83 and 84.
4 commentaires
Bruno Luong
le 11 Sep 2019
Modifié(e) : Bruno Luong
le 11 Sep 2019
If your array are 2-columns: X is n x 2 and Xa is 1 x 2, I propose
d2 = sum((X-Xa).^2,2)
[~,i] = min(d2);
if i==length(d2) || (i > 1 && d2(i-1) < d2(i+1))
i = i-1;
end
point1 = X(i,:);
point2 = X(i+1,:);
Réponses (2)
Matt J
le 11 Sep 2019
Modifié(e) : Matt J
le 11 Sep 2019
find is inefficient. You should instead do,
point1=discretize(xA,X);
point2=point1+1;
6 commentaires
Bruno Luong
le 12 Sep 2019
>> X=10:-1:1
X =
10 9 8 7 6 5 4 3 2 1
>> xA=2.5 % data fall between 3 and 2, meaning indexes 8 and 9 of X
xA =
2.5000
>> numel(X) + 1 - discretize(xA,flip(X)) % this should be index of Point 2
ans =
9
>> discretize(-xA,-X) % this should be index of Point 1
ans =
8
Voir également
Catégories
En savoir plus sur Number Theory dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!