how to find overlapping intervals?
21 ビュー (過去 30 日間)
古いコメントを表示
Hi, is there a function or an efficient way to find the overlap between two intervals represented in vectors. for example for a=[0 90 180 270]; and b=[26,180,270]; it should find the following overlaps and return the indices
26,90 (2,1) 90,180 (2,2) 180,270 (3,3) or (4,2) and the edges as well (as though the intervals are cyclic) 270,0 (1,4) 0,26 (1,1)
thanks
1 件のコメント
回答 (4 件)
Cedric
2013 年 5 月 14 日
編集済み: Cedric
2013 年 5 月 14 日
If boundaries are integer, a solution can built based on CUMSUM for building interval IDs and DIFF or UNIQUE for finding boundaries and IDs. I can develop this further if you are interested.
However, if all you have to do is to generate the list of intervals, without really caring for interval IDs, why couldn't you just go for something simpler, like:
>> bnd = unique([a, b]) ;
>> if bnd(end) < 360, bnd = [bnd, bnd(1)] ; end
>> int = [bnd(1:end-1); bnd(2:end)]
int =
0 26 90 180 270
26 90 180 270 0
0 件のコメント
Thomas
2013 年 5 月 14 日
Your question is a little ambiguous but her is something you can use
doc intersect
To see where the arrays overlap
[C,ia,ib]=intersect(a,b)
Ans
C =
180.00 270.00
ia =
3.00 4.00
ib =
2.00 3.00
参考
カテゴリ
Help Center および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!