MATLAB: Deleting repeating numbers from array

arrayconsecutiverepetition

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?

Best Answer

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