How to delete ones in a binary vector that correspond to more than k consecutive repetitions?
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
GONZALEZ DE COSSIO ECHEVERRIA Francisco Jose
le 27 Avr 2020
Commenté : Ameer Hamza
le 29 Avr 2020
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
0 commentaires
Réponse acceptée
Ameer Hamza
le 27 Avr 2020
Modifié(e) : Ameer Hamza
le 27 Avr 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 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!