File Exchange

image thumbnail


version (3.82 KB) by Bruno Luong
Partition an input vector into smaller series of subvectors of consecutive elements


Updated 19 Jul 2018

View Version History

View License

It says all in the summary. Nothing fancy just a convenient tool for spitting vectors.

Cite As

Bruno Luong (2021). SplitVec (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (18)


Omer Moussaffi



Matt J

Finally got around to trying this. I like it a lot, but I don't understand how the COL input argument works. Clearer documentation on that with examples would help.


Excellent. Thank you.

Xinyi Shen

This is a great function that I am looking for.
However, it would be more perfect if
1. the array can be unsorted.
2. the indices can be returned
For example, [s,i] = SplitVec([1 2 1 3 2 1])
s={[1 1 1],[2,2],[3]}
i={[1 3 6],[2,5],[4]}
I do not know if it is possible

Bruno Luong


SplitVec(a, @(v) [0; diff(v(1:end-1)).*diff(v(2:end))<0])

Michal Kvasnicka

OK ... I add the 'decrease' and 'increase' functions by:
case {'increase'}
fun = @(v) diff(v(:,1))<0;
case {'decrease'}
fun = @(v) diff(v(:,1))>0;

But, how to add functions for 'positive' and 'negative' values vector spliting?

Michal Kvasnicka

Will be possible to generalize this function to split vector on monotonical parts using ismonotinic function (



Ueli Rutishauser


Sauro Salomoni

Ingenious! Clearly explained and easy to follow. Thank you very much!

John D'Errico

As you would expect of all of Bruno's submissions, it does exactly what it says it will do. Superb documentation.

Tom Toner

Thanks a lot for such a great function!

MATLAB Release Compatibility
Created with R2010b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

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

Start Hunting!