Borrar filtros
Borrar filtros

Summing groups of ones

2 visualizaciones (últimos 30 días)
Sonia Wiemann
Sonia Wiemann el 24 de Abr. de 2012
If I have a list of ones and zeros....the ones are clustered together in groups....how can I ask the program to sum the ones within their groups?
  2 comentarios
Oleg Komarov
Oleg Komarov el 24 de Abr. de 2012
Can you provide an example of input and output?
William
William el 24 de Abr. de 2012
This might be helpful: http://www.mathworks.com/matlabcentral/newsreader/view_thread/160813

Iniciar sesión para comentar.

Respuesta aceptada

Image Analyst
Image Analyst el 24 de Abr. de 2012
Just call regionprops (if you have the image Processing Toolbox):
numberOfOnesPerGroup = regionprops(yourArray, 'area');
One line and you're done. This will get you the area (number of touching elements) for each group (elements that all touch each other).
  3 comentarios
Andrei Bobrov
Andrei Bobrov el 25 de Abr. de 2012
numberOfOnesPerGroup = regionprops(~~yourArray(:), 'Area','PixelIdxList' )
numberOfZerosPerGroup = regionprops(~yourArray(:), 'Area','PixelIdxList' );
ons = [ones(numel(numberOfOnesPerGroup),1), cat(1,numberOfOnesPerGroup.('Area'))]
out = zeros(numel(numberOfOnesPerGroup)+numel(numberOfZerosPerGroup),2);
if numberOfOnesPerGroup(1).PixelIdxList(1) < numberOfZerosPerGroup(1).PixelIdxList(1)
out(1:2:end,:) = ons;
out(2:2:end,2) = cat(1,numberOfZerosPerGroup.('Area'));
else
out(2:2:end,:) = ons;
out(1:2:end,2) = cat(1,numberOfZerosPerGroup.('Area'));
end
Image Analyst
Image Analyst el 25 de Abr. de 2012
Sonia: See that answer in your post about that question.

Iniciar sesión para comentar.

Más respuestas (2)

Rick Rosson
Rick Rosson el 24 de Abr. de 2012
y = cumsum(x);
d = x(2:end) - x(1:end-1);
k = ( d == -1 );
z = y(k);

Andrei Bobrov
Andrei Bobrov el 24 de Abr. de 2012
x1 = [~x(1) x(:)' ~x(end)]
groupones = diff([strfind(x1,[0 1]);strfind(x1,[1 0])]);
variant
x1 = x(:);
k = find([true;diff(x1)~=0]);
out = [x1(k) diff([k,[k(2:end);numel(x1)+1]],1,2)]

Categorías

Más información sobre Mathematics en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by