# How to add zeros diagonally in a matrix?

9 vues (au cours des 30 derniers jours)
ASHA PON le 14 Déc 2022
Commenté : ASHA PON le 14 Déc 2022
I am having a 4*5 matrix. Now, I need to add '0' diagonally and convert the matrix into 5*5. Thank you in advance.
Example:
A=[2 2 1 3 2
1 3 3 1 2
3 1 4 4 1
2 2 1 3 3]
Expected output:
B=[ 0 2 1 3 2
2 0 3 1 2
1 3 0 4 1
3 1 4 0 3
2 2 1 3 0]
##### 0 commentairesAfficher -1 commentaires plus anciensMasquer -1 commentaires plus anciens

Connectez-vous pour commenter.

### Réponse acceptée

Stephen23 le 14 Déc 2022
A = [2,2,1,3,2;1,3,3,1,2;3,1,4,4,1;2,2,1,3,3]
A = 4×5
2 2 1 3 2 1 3 3 1 2 3 1 4 4 1 2 2 1 3 3
S = size(A)+[1,0];
B = zeros(S);
B(~eye(S)) = A
B = 5×5
0 2 1 3 2 2 0 3 1 2 1 3 0 4 1 3 1 4 0 3 2 2 1 3 0
##### 1 commentaireAfficher AucuneMasquer Aucune
ASHA PON le 14 Déc 2022
Thank you for the reply. This is what i needed.

Connectez-vous pour commenter.

### Plus de réponses (1)

Jiri Hajek le 14 Déc 2022
Hi, MATLAB has functions that can extract upper and lower triangular parts of a matric, rest is just adding them into a zero pre-allocated matrix B:
A = randn(4)
Au = triu(A);
Al = tril(A);
B = zeros(5);
B(1:4,2:end) = Au;
B(2:end,1:4) = B(2:end,1:4)+Al
##### 1 commentaireAfficher AucuneMasquer Aucune
ASHA PON le 14 Déc 2022
Thank you for the reply. But i am getting error in matrix dimension mismatch.

Connectez-vous pour commenter.

### Catégories

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

R2020a

### Community Treasure Hunt

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

Start Hunting!

Translated by