If I have the following matrix
a = [1 2 3; 4 5 6; 7 8 10
a =
1 2 3
4 5 6
7 8 10
How do I sum the diagonal of 7,5,3? I know that to sum 1,5,10 I use
sum(diag(a))
But when I try
sum(diag(a,2))
The answer is 3. Is there a built in function that calculates the sum, or do I have to make a while loop?

1 commentaire

Tia Miller
Tia Miller le 15 Oct 2018
sum(diag(a,2)) is summing the diagonal 2 away from the main diag, which has one entry, 3.
sum(diag(flip(a))) will sum 3, 5, 7, or the main diag after the matrix has been flipped

Connectez-vous pour commenter.

 Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 27 Sep 2015
Modifié(e) : Andrei Bobrov le 27 Sep 2015

0 votes

sum(diag(a(:,end:-1:1)));
or summing all diagonals:
sum(spdiags(rot90(a)));

Plus de réponses (2)

Ahmed Diaa
Ahmed Diaa le 5 Mai 2018

0 votes

x=sum(diag(E));% calculating the normal diagonal
y=sum(diag(flip(E)));% calculating the inverse diagonal
z=[];% subtracting the common element
s=y+x-z ;% the sum

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by