フィルターのクリア

Find adjacent values of a vector corresponding to another vector

4 ビュー (過去 30 日間)
anton fernando
anton fernando 2017 年 12 月 21 日
回答済み: Jos (10584) 2017 年 12 月 22 日
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.
anton fernando
anton fernando 2017 年 12 月 22 日
Once you flipped the matrices it works. Thanks. :)

サインインしてコメントする。

その他の回答 (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 Center および File ExchangeLarge 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