2016-07-24 10 views
1

Wie kann ich den überlappenden Bereich zwischen zwei Bereichen finden, die durch ihren Start- und Endpunkt definiert sind?
Zum Beispiel lassenÜberlappende Region zwischen zwei durch ihren Start- und Endpunkt definierten Bereichen finden

r=[0.74616534, 4.1743176523] 

und

k=[0,1] 

Wie diesen Überlappungsbereich haben:

[0.74616534, 1] 

Oder mit:

r=[-2.74616534, 0.1743176523] 

es würde g ive:

[0, 0.1743176523] 

Oder mit:

r=[0.0002845, 0.9888455] 

es geben würde:

[0.0002845, 0.9888455] 

usw.

Ist es möglich, so einfach wie und ohne Looping und zu vergleichen sein kann jede Kombination von "Start/Ende" -Punkten?
Arbeiten sowohl auf Matlab und GNU Octave (keine exotischen Funktionen). Vielen Dank.

Antwort

2

Die Überlappung ist der Bereich, der von der maximalen der beiden Minima beginnt, und endet an der minimalen der beiden Maxima. Wenn die zwei in der umgekehrten Reihenfolge sind, ist es ein leerer Satz.

z.

r = [0.74616534, 4.1743176523]; 
k = [0, 1]; 
a = max (min (r), min (k)); 
b = min (max (r), max (k)); 
if a <= b; Range = [a, b]; else; Range = []; end 
+1

Vielen Dank. Ich muss schlafen ... Nur ein wenig Präzision; Wenn a == b, dann ist es nicht mehr eine "Reichweite" in seiner strengen Bedeutung, sondern nur ein Punkt. Nun, ein Punkt kann als ein spezieller Bereich von Länge = 0 angesehen werden. Trotzdem danke. –

+0

Ja, genau. Der gemeinsame Bereich zwischen [-1,0] und [0,1] wäre ein einzelner Punkt bei [0] –

+0

@Tasos, du hast recht. Ich habe meine Antwort gelöscht – user1543042