Add a diagonal of zeros to a matrix in MATLAB

17 vues (au cours des 30 derniers jours)
Amal FH
Amal FH le 25 Déc 2020
Commenté : Amal FH le 25 Déc 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 commentaire
Amal FH
Amal FH le 25 Déc 2020
I meant a symmetric matrix.

Connectez-vous pour commenter.

Réponse acceptée

Asad (Mehrzad) Khoddam
Asad (Mehrzad) Khoddam le 25 Déc 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

Plus de réponses (0)

Catégories

En savoir plus sur Operating on Diagonal Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by