how to find the nearest value?

1 vue (au cours des 30 derniers jours)
Rabih Sokhen
Rabih Sokhen le 21 Oct 2021
hello guys
suppose i have a vector[s]
A=[ 1 2 3 4 5 6]
B=[6.1 5.1 4.1 3.1 2.1 1.1]
and
position_A=[10 20 30 40 50 60]
i want to find the nearest value of B in A
i have tried to do the following
for i=1: length(A)
B(i)=min(abs(A-B(i)));
end
% now my vector B is [6 5 4 3 2 1]
i want to creat a vector that indicate the position of B, for example, the number 2 is the second element in A have position " position _A(2)=20",
i want to creat a vector "position_B" in a way that the number 2 in vector B have a position_B=20
thank you in advance

Réponse acceptée

Bruno Luong
Bruno Luong le 21 Oct 2021
A=[ 1 2 3 4 5 6]
A = 1×6
1 2 3 4 5 6
B=[6.1 5.1 4.1 3.1 2.1 1.1]
B = 1×6
6.1000 5.1000 4.1000 3.1000 2.1000 1.1000
position_A=[10 20 30 40 50 60]
position_A = 1×6
10 20 30 40 50 60
loc = interp1(A,1:length(A),B,'nearest','extrap');
position_B = position_A(loc)
position_B = 1×6
60 50 40 30 20 10
B = A(loc)
B = 1×6
6 5 4 3 2 1

Plus de réponses (1)

dpb
dpb le 21 Oct 2021
The builtin way in MATLAB is interp1
>> A=[1:6];
>> B=flip(A)+0.1;
>> posn=[10:10:60];
>> C=posn(interp1(B,A,A,'nearest','extrap'))
C =
60 50 40 30 20 10
>>

Catégories

En savoir plus sur Line Plots 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!

Translated by