MATLAB: How to find start and end points of non-zero elements in a vector

find

I have some vectors with mostly zeros and a few non-zero values all grouped together (see example plot). I want to know the index for the start and end points of these non-zero areas, i.e. the start and end of the peaks on the plot.
I can use find to get the non-zero areas, then iterate through with a loop to find everywhere the jump in values is greater than 1, but is there a better way to do this?

Best Answer

t = YourVec ~= 0;
findstr([0 t], [0 1])-1 %gives indices of beginning of groups
findstr([t 0], [1 0]) %gives indices of end of groups