count groups of elements and distances between them
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Dear, Colleagues:
Let's say I have a matrix:
A= [6 6 6 4 4 4 4 4 6 5 5 7 7 7 8 9 8 7 0 0 0 0]
I would like to count number of six and number of zeros (as a group of consequent elements).
And, I would also like to know the distance between groups.
The Matlab output that I would like to get: _____________________________________________________________________________
There are two groups of 6 and one group of 0s.
L= [3 1 4] - length of each group
D= [5 9] - distance between groups
Thank you in advance.
0 comentarios
Respuesta aceptada
Andrei Bobrov
el 9 de Ag. de 2013
Editada: Andrei Bobrov
el 9 de Ag. de 2013
A= [6 6 6 4 4 4 4 4 6 5 5 7 7 7 8 9 8 7 0 0 0 0];
a = A == 6 | A == 0;
a1 = [0 a(:)' 0];
i1 = strfind(a1,[0 1]);
i2 = strfind(a1,[1 0]);
L = i2 - i1;
D = i1(2:end) - i2(1:end-1);
or
A= [6 6 6 4 4 4 4 4 6 5 5 7 7 7 8 9 8 7 0 0 0 0];
a = [A(:) == 6 | A(:) == 0 ; false];
b = [true;diff(a(:))~=0];
bn = find(b);
idx = bn(cumsum(a(b))>0);
LD = diff(idx);
L = LD(1:2:end);
D = LD(2:2:end);
0 comentarios
Más respuestas (3)
Richard Brown
el 8 de Ag. de 2013
Editada: Richard Brown
el 8 de Ag. de 2013
A = [6 6 6 4 4 4 4 4 6 5 5 7 7 7 8 9 8 7 0 0 0 0];
x = diff([find(diff([0 ismember(A, [0 6]) 0]))]);
L = x(1:2:end);
D = x(2:2:end);
7 comentarios
Richard Brown
el 8 de Ag. de 2013
Ah, I thought I'd corrected it fast enough that noone would notice. Sorry about that.
Azzi Abdelmalek
el 8 de Ag. de 2013
Editada: Azzi Abdelmalek
el 9 de Ag. de 2013
A= [6 6 6 4 4 4 4 4 6 5 5 7 7 7 8 9 8 7 0 0 0 0];
A=num2str(A);
A(A==' ')='';
[a0,a1,group0]=regexp(A,'[06]+','start','end','match');
longueur=a1-a0+1 % length of groups
id=diff(sort([a0 a1 ]))-1 ;
id=id(2:2:end)% distance between groups
group0 % your groups
%or with Richard's idea
idx=1:numel(A)+2;
A=A~=0 & A~=6 ;
id=diff(idx(~~(diff([0 ~A 0]))));
L1=id(1:2:end);
D1=id(2:2:end);
0 comentarios
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!