How to delete ones in a binary vector that correspond to more than k consecutive repetitions?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
GONZALEZ DE COSSIO ECHEVERRIA Francisco Jose
il 27 Apr 2020
Commentato: Ameer Hamza
il 29 Apr 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 Commenti
Risposta accettata
Ameer Hamza
il 27 Apr 2020
Modificato: Ameer Hamza
il 27 Apr 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 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Logical in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!