dividing a column matrix based on the no
Afficher commentaires plus anciens
i have a single column matrix A=0 0 0 1 1 1 1 0 0 0 0 2 2 2 2 0 0 0 0 now i have to divide this in to several matrices such whenever 0 changes to 1 or 2 i want a new matrix in this case A1= 1 1 1 1 0 0 0 0; A2=2 2 2 2 0 0 0 0 which are also single column matrices
Réponse acceptée
Plus de réponses (1)
Andrei Bobrov
le 16 Mai 2011
more variant
A = A(:);
I = cumsum([0;diff(A)]~=0 & (A ~= 0));
out = arrayfun(@(x)A(I==x),1:max(I),'un',0);
same with the loop
A = A(:).';
I = cumsum([0,diff(A)]~=0 & (A ~= 0));
out = cell(1,max(I));
for j = 1:max(I),
out{j} = A(j==I);
end
4 commentaires
bilhan
le 16 Mai 2011
bilhan
le 16 Mai 2011
Oleg Komarov
le 16 Mai 2011
I edited my solution to take into account initial conditions (if A doesn't start with a 0) and to split a matrix on the basis of the first array.
bilhan
le 17 Mai 2011
Catégories
En savoir plus sur Data Type Identification dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!