Borrar filtros
Borrar filtros

How to Sum matrix diagonals

48 visualizaciones (últimos 30 días)
Krish Desai
Krish Desai el 27 de Sept. de 2015
Comentada: Tia Miller el 15 de Oct. de 2018
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 comentario
Tia Miller
Tia Miller el 15 de Oct. de 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

Iniciar sesión para comentar.

Respuesta aceptada

Andrei Bobrov
Andrei Bobrov el 27 de Sept. de 2015
Editada: Andrei Bobrov el 27 de Sept. de 2015
sum(diag(a(:,end:-1:1)));
or summing all diagonals:
sum(spdiags(rot90(a)));

Más respuestas (2)

John D'Errico
John D'Errico el 27 de Sept. de 2015
sum(diag(flip(A)))
should work.

Ahmed Diaa
Ahmed Diaa el 5 de Mayo de 2018
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

Categorías

Más información sobre Operating on Diagonal Matrices en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by