Extract runs of values from cell array
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Alexander Collins
il 17 Giu 2021
Commentato: Alexander Collins
il 17 Giu 2021
I have a cell array containing many empty cells, the occasional isolated value surrounded by empty cells, and a few runs of values in consecutive cells. e.g.:
C = {[] [] 107 [] [] [] [] [] [] [] [] [] 60 79 98 117 [] []}
Is there a way to pull out only those cells that form part of a run of values?
i.e.
B = {60 79 98 117}
0 Commenti
Risposta accettata
KSSV
il 17 Giu 2021
iwant = C(~cellfun('isempty',C))
3 Commenti
KSSV
il 17 Giu 2021
C = {[] [] 107 [] [] [] [] [] [] [] [] [] 60 79 98 117 [] []} ;
idx = cellfun(@isempty,C) ;
C(idx) = {NaN} ;
C = cell2mat(C) ;
ii = zeros(size(C));
jj = C > 0;
ii(strfind([0,jj(:)'],[0 1])) = 1;
idx = cumsum(ii).*jj;
out = accumarray( idx(jj)',C(jj)',[],@(x){x'});
celldisp(out)
Reference: https://in.mathworks.com/matlabcentral/answers/104614-grouping-continuous-nonzero-in-a-row-vector
You may pick the cell which has more than one element.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Cell Arrays in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!