Replace 1's with 0's if there is less that five 1's between 0's in vector
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Eric
am 1 Apr. 2017
Beantwortet: the cyclist
am 1 Apr. 2017
Hi everyone,
I want to replace 1's with 0's if there are less than five 1's between the zeros in a large vector. For example, I have the following vector:
x = [1; 1; 1; 1; 1; 1; 0; 1; 1; 1; 0; 1; 1; 1; 1; 1; 1; 0; 1; 1; 1; 1; 1; 1; 1; 0];
And I would like to create a script that can find and replace only the 1's where there are less than five 0's in between, which would end up with the following results with the example from above:
x = [1; 1; 1; 1; 1; 1; 0; 0; 0; 0; 0; 1; 1; 1; 1; 1; 1; 0; 1; 1; 1; 1; 1; 1; 1; 0];
Thanks a lot in advance,
Eric
0 Kommentare
Akzeptierte Antwort
the cyclist
am 1 Apr. 2017
Here is one way:
x = [1; 1; 1; 1; 1; 1; 0; 1; 1; 1; 0; 1; 1; 1; 1; 1; 1; 0; 1; 1; 1; 1; 1; 1; 1; 0];
[b n bi] = RunLength(x);
shortOneRunIndex = find(b'==1 & n<5);
for ns = shortOneRunIndex
x(bi(ns):bi(ns+1)-1) = 0;
end
This algorithm assumes that the sequence ends with a zero, as your example did. It could be fixed up to not require that assumption.
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Downloads finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!