How to get the diagonal and a subdiagonal in the same matrix?

32 views (last 30 days)
I'm trying to get matrix that only has the diagonal and the first subdiagonal values only. Say I have a 4x4 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 4x4 matrix with the diagonal but the part I'm hung up on is getting the subdiagonal in the form of a 4x4 matrix, I used
diag(diag(A,1))
and it gave me a 3x3 matrix of the subdiagonal. To conclude, is there a way of getting a subdiagonal in the original matrix dimensions?

Accepted Answer

Mohammad Abouali
Mohammad Abouali on 15 Oct 2014
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

More Answers (0)

Categories

Find more on Matrices and Arrays 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!