MATLAB Answers


Find overlapped range between vectors

SSOI SS 님이 질문을 제출함. 9 May 2014
최근 활동 SSOI SS 님이 댓글을 추가함. 9 May 2014
I have a simple perhaps math question:
There are 5 vectors despiting their ranges, e.g.
[ 5 10]
[ 7 20]
[12 26]
[ 6 9]
[ 0 3]
How can I find their overlapped range? (Desired result is [7 9])
I came to a solution with two for loops, but it will be very time-consuming if the number of vectors is vast.
Does anyone have a simple and fast way to do this?

  댓글 수: 2

What is the number of vectors? You can do tens of millions of for loop iterations in about a second so I doubt it's the for loop itself that is causing the delay. Maybe it's min() or max() being called so many times but I doubt it the iterating. Look, I did a billion iterations in just over 2 seconds :
for k = 1 : 1e9
Elapsed time is 2.269138 seconds.
ok, I have to admit that the cases my algorithm have to deal with are more complicated, since the vectors can satuate and have overturns. So I have to keep correcting the elements. In total I get a result of 4.37 sec with 227230 loops. That's the moment I started to think alternatives for the for loops.
Maybe there is a better way ...

로그인 to comment.


답변 수: 1

Image Analyst 님의 답변 9 May 2014

I think you need a for loop. Even if you were to somehow get all of your 227230 vectors into a 2D array that you then did some non-loop/vectorized method, you'd still have to use a loop to stuff the vectors into the 2D array in the first place , like say, you were reading the individual vectors from a text file, or Excel workbook, or retrieving them from a function or something.

  댓글 수: 1

I don't have create/stuff an extra 2D since the vectors are already in array format ...

로그인 to comment.

Translated by