How to delete ones in a binary vector that correspond to more than k consecutive repetitions?

2 visualizaciones (últimos 30 días)
Given a number k and a binary vector v. How to saturate the number of consecutive repetitions of ones in v to the value k? For example, if k=3 and v=[1,0,0,1,1,0,1,1,1,1,0,0] then the output should be w=[1,0,0,1,1,0,1,1,1,0,0]. Speed of the code is highly important and no toolboxes available.
Thanks in advance

Respuesta aceptada

Ameer Hamza
Ameer Hamza el 27 de Abr. de 2020
Editada: Ameer Hamza el 27 de Abr. de 2020
Try this. It uses function from image processing toolbox. You can check if the speed is acceptable
v = [1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,1,0,1];
rgs = bwconncomp(v);
pxlList = cellfun(@(x) {(x(4:end).')}, rgs.PixelIdxList);
v([pxlList{:}]) = [];
Result:
v =
Columns 1 through 13
1 0 0 1 1 0 1 1 1 0 0 1 1
Columns 14 through 16
1 0 1
  4 comentarios

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Read, Write, and Modify Image 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!

Translated by