Make true all the false rows of a column of a matrix which are in between the first true and the last true row

1 view (last 30 days)
The first true element of column 1 of matrix a is at row 2. The last true element of column 1 of matrix a is at row 9. I want to get a matrix b whose 1st column will start with false, from row 2 to row 9 will b true and row 10 will be false. Likewise, I want to do the same for the rest of the columns of matrix a.
Example:
a =[
0 0 1 0
1 0 0 0
1 0 0 1
1 0 0 1
1 1 1 0
0 0 0 1
1 1 1 0
0 1 1 0
1 0 0 0
0 0 0 1];
b =[
0 0 1 0
1 0 1 0
1 0 1 1
1 0 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 0 0 1
0 0 0 1];

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 16 Jun 2013
b = cumsum(a)&flipud(cumsum(flipud(a)))

More Answers (0)

Categories

Find more on Operators and Elementary Operations 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!