MATLAB Answers

# Add a diagonal of zeros to a matrix in MATLAB

63 views (last 30 days)
Amal FH on 25 Dec 2020
Commented: Amal FH on 25 Dec 2020
Let
M1 = [ 1 2 3 4
2 5 4 2
3 4 5 1
4 2 1 2 ]
a diagonal matrix.
I want to add a diagonal of zeros where
M1'= [ 0 1 2 3 4
1 0 5 4 2
2 5 0 5 1
3 4 5 0 2
4 2 1 2 0 ]
So I keep the original matrix and just add the diagonal of zeros. So size(M1) = (4x4) ans size (M1')=(5x5)
I tried "
M1' = [tril(M1,-1) zeros(N, 1)] + [zeros(N,1) triu(M1)];
" But this won't work because it changes the diagonal of the original matrix.
##### 1 CommentShowHide None
Amal FH on 25 Dec 2020
I meant a symmetric matrix.

Sign in to comment.

### Accepted Answer

Asad (Mehrzad) Khoddam on 25 Dec 2020
You can use a loop like this:
M1 = [ 1 2 3 4
2 5 4 2
3 4 5 1
4 2 1 2 ];
N=size(M1,1);
M2=zeros(N+1,N+1);
for i=0:N-1
M2 = M2 + diag(diag(M1,-i),-i-1)+ diag(diag(M1,i),i+1);
end
M2
##### 1 CommentShowHide None
Amal FH on 25 Dec 2020
Thank you so much!

Sign in to comment.

### Community Treasure Hunt

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

Start Hunting!