How to convert simple array to cell array with condition?
3 ビュー (過去 30 日間)
古いコメントを表示
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:

0 件のコメント
採用された回答
Jan
2022 年 4 月 10 日
編集済み: Jan
2022 年 4 月 10 日
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.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Operators and Elementary Operations についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!