How to convert simple array to cell array with condition?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/959345/image.jpeg)
0 Kommentare
Akzeptierte Antwort
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
Alterntaively:
C = splitapply(@(x) {x}, pop, cumsum(pop == 1));
But then the trailing 1 is missing and appendig it manually is a mess.
Weitere Antworten (0)
Siehe auch
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!