Array splitting in sub-arrays of consecutive elements I want to split an array in sub-arrays of consecutive elements. For example, for the array:

a=[1 2 3 6 7 9 10 15]


I want an output 1 2 3, 6 7, 9 10, 15.

I think that the natural choice is to use a struct for this:

[v,x] = find(diff(a)&gt;1) %find "jumps"

xx=[0 x length(a)] 

for ii=1:length(xx)-1
   cs{ii}=a(xx(ii)+1:xx(ii+1)); %output struct array
end



  v =

 1     1     1

  
  x =

 3     5     7

  
  xx =

 0     3     5     7     8



The code works correctly but I was wondering if there are smarter ways to do this.
You should preallocate the cs cell array:

[v,x] = find(diff(a)&gt;1); %find "jumps"
xx = [0 x length(a)];
cs = cell(length(a)+1,1);
for ii = 1:length(xx)-1
   cs{ii} = a(xx(ii)+1:xx(ii+1));
end


Style comments:


Try to keep consistent formatting, either put spaces around all equal signs, or around none.
Terminate statements with a semicolon to prevent your function producing output to the command window.