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

falsematrix manipulationtrue

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];

Best Answer

b = cumsum(a)&flipud(cumsum(flipud(a)))