Create intermediate indices from vectors of start and stop indices?

Is there a fast way to create a vector of indices taking as an input two vectors containing the start and stop indices?
I want:
a = [2 7 9 17]; b = [4 7 12 17];
c = fun(a,b) = [2 3 4 7 9 10 11 12 17];

1 Kommentar

I guess I'm not following. Which of the 4 elements of a, or the 4 elements of b, or the 9 elements of c represent the start indices, and which represent the stop indices?

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Jan
Jan am 20 Feb. 2012
See Bruno's FEX: mcolon.
Are the values always integers? Can the intervals overlap? These details are very important for the implementation.
[EDITED] If the intervals do not touch eachother - in other words: if there is always an element between them:
a = [2 7 9 17];
b = [4 7 12 17];
k(b+1) = -1;
k(a) = 1;
c = find(cumsum(k));
For large arrays it would help to save time, if CUMSUM handle INT8 vectors - unfortunately it doesn't.

3 Kommentare

The values are always integers and cannot overlap, although an interval can be one element.
Can the intervals "touch" eachother. e.g. [1 4] [3 6]?
The intervals cannot touch each other so your answer is pretty much what I'm looking for.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Gefragt:

am 20 Feb. 2012

Community Treasure Hunt

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

Start Hunting!

Translated by