how to separate the non-zero elements from an array

6 views (last 30 days)
suppose i have a column matrix with non zero elements in between the zeros. i want to put the nonzero values in a cell of different groups of nonzero integers.
for example x=[ 0 0 0 1 2 3 0 0 2 3 5 6 0 0 2 5 0]
[1 2 3] is one group [2 3 5 6 ] is the next. i want all these groups in one cell.

Accepted Answer

KSSV
KSSV on 28 Nov 2018
A = [ 0 0 0 1 2 3 0 0 2 3 5 6 0 0 2 5 0] ;
ii = zeros(size(A));
jj = A > 0;
ii(strfind([0,jj(:)'],[0 1])) = 1;
idx = cumsum(ii).*jj;
out = accumarray( idx(jj)',A(jj)',[],@(x){x'});
  5 Comments
johnson saldanha
johnson saldanha on 29 Nov 2018
T=readtable('finalcycle.xlsx');
data2=[T(:,1),T(:,2),T(:,3),T(:,4)];
data1=table2array(data2);
v=data1(:,2);
ii = zeros(size(v));
jj = v > 0;
ii(strfind([0,jj(:)'],[0 1])) = 1;
idx = cumsum(ii).*jj;
out = accumarray( idx(jj),v(jj),[],@(x){x'});
johnson saldanha
johnson saldanha on 29 Nov 2018
or is it possible for me to put it in a matrix. the first column being the first group, second column being the second group and so on

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!