Count amount of 0's and 1's in an array
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Sasha Melov
el 6 de Abr. de 2015
Editada: Jos (10584)
el 7 de Abr. de 2015
Hello, I'm working on a image processing project. My current task is to get the number of 0's and 1's connected elements. Example: I have an 1D array which looks like:
[0000 1111 0000000 1111 000 1 00 11111 00 11111 00]
What I want is to count elements connected to each other and return something like this:
[4 4 7 4 3 1 2 5 2 5 2]
Is there any easy way to do that? This includes generating dynamical array, so I have no idea how to do that without iterating through array twice
0 comentarios
Respuesta aceptada
Mahdiyar
el 6 de Abr. de 2015
Hi Melov
Please, let me know if it is what you want.
clc
clear
A = [0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0];
B = A(2:end);
C = A(1:end-1) - B;
D = find(C~=0);
Result = [D(1) D(2:end) - D(1:end-1) length(A)-D(end)]
Regards,
Más respuestas (2)
Jan
el 6 de Abr. de 2015
A = [0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0];
[B, N] = RunLength(A);
B =
0 1 0 1 0 1 0 1 0 1 0
N =
4 4 7 4 3 1 2 5 2 5 2
0 comentarios
Jos (10584)
el 7 de Abr. de 2015
Editada: Jos (10584)
el 7 de Abr. de 2015
Since the array is always an alternation of zeros and ones
N = diff([0 find(diff(A)) numel(A)])
will produce the runs of consecutive zeros and ones.
0 comentarios
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!