Deleting repeating numbers from array

2 views (last 30 days)
Bran
Bran on 21 Sep 2018
Edited: Stephen23 on 21 Sep 2018
I have a very long array of numbers consisting of 0's and 1's and I would like to delete sections where 0 is consecutively repeated thirty times or more. How would I go about this?

Accepted Answer

Stephen23
Stephen23 on 21 Sep 2018
Edited: Stephen23 on 21 Sep 2018
Method one: regexprep:
A = [zeros(1,30),1,1,1,1,zeros(1,29),1,1,zeros(1,30)]; % fake data
Z = +regexprep(char(A),'\0{30,}','')
Method two: diff, find, and a loop:
Z = A;
D = diff([1,Z,1]);
B = find(D<0);
E = find(D>0);
X = find((E-B)>=30);
for k = X(end:-1:1)
Z(B(k):E(k)-1) = [];
end

More Answers (0)

Community Treasure Hunt

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

Start Hunting!