Split Matrix into several depending on value matlab -
i trying split nx3 matrix submatrices in matlab. matrix c of shape
c =  1     1     1  0     0     0  0     0     0  1     1     1  1     1     1  1     1     1  0     0     0  1     1     1  1     1     1   it either has rows of zeros or rows of ones. want split matrix keep matrices of ones. here instance there's 3 'groups' of ones. want get
c1 =  1     1     1  c2 =  1     1     1  1     1     1  1     1     1  c3 =  1     1     1  1     1     1   however real matrix n 3, don't know ones are.
edit 1:
now, need split x1 , y1 (individual row vectors same length c) x(1), x(2),.. (similarly y vector) based on how matrix c split
sample input:
x1 = (1:9)'; y1 = (2:2:18)';   desired output:
x(1)=[1], x(2)=[4 5 6]' , x(3)=[8 9]' y(1)=[2], y(2) =[8 10 12]' , y(3)=[16 18]'      
input:
c = [1     1     1;      0     0     0;      0     0     0;      1     1     1;      1     1     1;      1     1     1;      0     0     0;      1     1     1;      1     1     1;]      x1 = (1:9)';  y1 = (2:2:18)';   code:
elementallengtha = cellfun('length',regexp(sprintf('%i',all(c,2)),'1+','match')); elementalstarta = regexp(sprintf('%i',all(c,2)),'1+','start'); result = cell(length(elementallengtha),1); x = cell(length(elementallengtha),1); y = cell(length(elementallengtha),1); = 1:length(elementallengtha)     result(i) = {c(elementalstarta(i):elementalstarta(i)+elementallengtha(i)-1,:)};     x(i) = {x1(elementalstarta(i):elementalstarta(i)+elementallengtha(i)-1,:)};     y(i) = {y1(elementalstarta(i):elementalstarta(i)+elementallengtha(i)-1,:)}; end   output:
>> cell2mat(result(1)) ans =  1     1     1  >> cell2mat(result(2)) ans =  1     1     1  1     1     1  1     1     1  >> cell2mat(result(3)) ans =  1     1     1  1     1     1  >> cell2mat(x(3))  %similarly other cells results ans =  8  9      
Comments
Post a Comment