MATLAB: How to get the diagonal and a subdiagonal in the same matrix

diagmatrixmatrix manipulation

I'm trying to get matrix that only has the diagonal and the first subdiagonal values only. Say I have a 4×4 matrix
A=[ 1 2 3 4;
5 6 7 8;
9 10 11 12;
13 14 15 16]
I want to get a matrix
B=[1 2 0 0;
0 6 7 0;
0 0 11 12;
0 0 0 16].
I know using
diag(diag(A))
will give me a 4×4 matrix with the diagonal but the part I'm hung up on is getting the subdiagonal in the form of a 4×4 matrix, I used
diag(diag(A,1))
and it gave me a 3×3 matrix of the subdiagonal. To conclude, is there a way of getting a subdiagonal in the original matrix dimensions?

Best Answer

A=[ 1 2 3 4;
5 6 7 8;
9 10 11 12;
13 14 15 16]
B=triu(A)-triu(A,2)
B =
1 2 0 0
0 6 7 0
0 0 11 12
0 0 0 16