How to create zeros between ones in array

1 view (last 30 days)
hello,
anyone know a fast way to create zeros between ones in an array?
for example A = [0 0 0 1 1 1 1 0 0 0]
I want it to return B = [0 0 0 1 0 0 1 0 0 0]
I was thinking of doing a double for loop running from the left side and the right. If there is a better way, please let me know. Thanks in advance

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 30 Jun 2014
A=[0 0 0 1 1 1 1 0 0 0]
AA=[0 A 0]
i1=strfind(AA,[0 1])+1
i2=strfind(AA,[1 0])-2
for k=1:numel(i1)
A(i1:i2)=0;
end
A

More Answers (1)

Andrei Bobrov
Andrei Bobrov on 30 Jun 2014
B = zeros(size(A));
B([strfind([0 A],[0 1]),strfind([A 0],[1 0])]) = 1;

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!