Find adjacent values of a vector corresponding to another vector

4 次查看(过去 30 天)
Hi, I am trying to find the adjacent points of a 1-D vector corresponding to the elements of another column vector. It is very hard to explain. I will explain it from an example.
A=[ 11; 22; 32; 44; 51;]; B=[11.4 32.4 36.6]; So I need a matrix with the adjacent points of each element of the vector B of vector A as in, Ans1=[11 22; 32 44; 32 44;] also the corresponding locations as in, ans2[1 2; 3 4; 3 4;] Appreciate any help.

采纳的回答

Matt J
Matt J 2017-12-21
idx=discretize(B,A);
Ans2=[idx(:),idx(:)+1];
Ans1=A(Ans2);
  7 个评论
anton fernando
anton fernando 2017-12-22
编辑:anton fernando 2017-12-22
I am sorry. I meant by not sorted that there can be NaN values and repeated values in the vector. But initially I don't have to worry about it. But sure, I can flip the matrix and make it monotonically increasing. But vector A is monotonically decreasing.

请先登录,再进行评论。

更多回答(1 个)

Jos (10584)
Jos (10584) 2017-12-22
Here is a solution that finds the element in A that is just before or just after each element in B.
A=[ 11; 22; 32; 44; 51;]; B=[11.4 32.4 36.6]
clear ans2
ans2(:,1) = nearestpoint(B, A, 'before') ;
ans2(:,2) = nearestpoint(B, A, 'after') ;
ans1 = A(ans2) % will fail when elements of B do not fall between elements of A. Check for that!
My NEARESTPOINT utility can be downloaded from the File Exchange:

类别

Help CenterFile Exchange 中查找有关 Large Files and Big Data 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by