Summing the diagonal of a matrix "the other way"?

7 visualizaciones (últimos 30 días)
Emanuele Joy
Emanuele Joy el 8 de Jun. de 2018
Editada: Birdman el 8 de Jun. de 2018
I don't know if I'm wording it correctly, but I'm trying to sum the diagonal of a matrix the other "direction" than the diag(A) function. For example, I have a matrix:
A =
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
If I use diag(A), it'd give me 1 + 6 + 11 + 16, but I'm looking for:
1
2 + 5
3 + 6 + 9
4 + 7 + 10 + 13
And put all the sums in a 1xn array, much like a Fibonacci sequence. Is there a function that can do this, or can diag(A) be altered in someway?
  1 comentario
Aquatris
Aquatris el 8 de Jun. de 2018
Editada: Aquatris el 8 de Jun. de 2018
Try this solution ; https://www.mathworks.com/matlabcentral/answers/294766-most-efficient-way-to-sum-anti-diagonal-elements

Iniciar sesión para comentar.

Respuesta aceptada

Birdman
Birdman el 8 de Jun. de 2018
Editada: Birdman el 8 de Jun. de 2018
This can be done as follows:
res=[sum(diag(fliplr(A),3)) sum(diag(fliplr(A),2)) sum(diag(fliplr(A),1)) sum(diag(fliplr(A)))]
or it can be done in a for loop:
for i=1:size(A,1)
res(i)=sum(diag(fliplr(A),size(A,1)-i))
end

Más respuestas (0)

Categorías

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

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by