Filter löschen
Filter löschen

How to convert simple array to cell array with condition?

2 Ansichten (letzte 30 Tage)
ANURAG DEEPAK
ANURAG DEEPAK am 10 Apr. 2022
Kommentiert: ANURAG DEEPAK am 10 Apr. 2022
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:

Akzeptierte Antwort

Jan
Jan am 10 Apr. 2022
Bearbeitet: Jan am 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 Kommentar
ANURAG DEEPAK
ANURAG DEEPAK am 10 Apr. 2022
Thank you sir for timely response.
Yes sir, the altenative method is providing 1 in seperate cell.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by