How to convert simple array to cell array with condition?

2 views (last 30 days)
Respected Sir,
I want to convert the array of size( 1*37) into cell array with constraint i.e., whenever in the array 1 is encountered array should start from next cell.
For example:
I have a array:
pop = [1 28 25 15 13 17 1 31 27 8 14 22 18 1 21 6 26 11 16 23 10 19 1 7 4 3 24 29 12 9 1 2 32 20 5 30 1]
the output in form of cell array should be:

Accepted Answer

Jan
Jan on 10 Apr 2022
Edited: Jan on 10 Apr 2022
pop = [1 28 25 15 13 17 1 31 27 8 14 22 18 1 21 6 26 ...
11 16 23 10 19 1 7 4 3 24 29 12 9 1 2 32 20 5 30 1];
m = find(pop == 1);
n = numel(m) - 1;
C = cell(1, n);
for k = 1:n
C{k} = pop(m(k):m(k+1));
end
C
C = 1×5 cell array
{[1 28 25 15 13 17 1]} {[1 31 27 8 14 22 18 1]} {[1 21 6 26 11 16 23 10 19 1]} {[1 7 4 3 24 29 12 9 1]} {[1 2 32 20 5 30 1]}
Alterntaively:
C = splitapply(@(x) {x}, pop, cumsum(pop == 1));
But then the trailing 1 is missing and appendig it manually is a mess.
  1 Comment
ANURAG DEEPAK
ANURAG DEEPAK on 10 Apr 2022
Thank you sir for timely response.
Yes sir, the altenative method is providing 1 in seperate cell.

Sign in to comment.

More Answers (0)

Categories

Find more on Operators and Elementary Operations in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!