MATLAB: How to extract not zero numbers from a matrix

extract

I have a matrix, like
M=[0 1 2 5 2 3 0 0 0 0 4 3 2 5 0 0 0 4 3 2 ...];
I'd like to extract n separated matrices, like:
A=[ 1 2 5 2 3];
B=[ 4 3 2 5];
C=[ 4 3 2];
or a matrix n Columns or rows, like
M=[A;B;C]

Best Answer

  • M=[0 1 2 5 2 3 0 0 0 0 4 3 2 5 0 0 0 4 3 2 ];
    idx=[0 M~=0 0];
    ii1=strfind(idx,[0 1]);
    ii2=strfind(idx,[1 0])-1;
    out=arrayfun(@(ii,jj) M(ii:jj),ii1,ii2,'un',0);
    celldisp(out)