Sum of cross diagonals of a non symmetric matrix

2 views (last 30 days)
Hi I need to calculate the sum of cross diagonals of a non symmetric matrix. if A=[ 1 2 3 4;5 6 7 8; 9 8 7 3]
I want to calculate the sum of all the diagonals from left to right and store it in an array such as:
B=[1 7 18 19 15 3] Can someone help me to find the logic for this calculation?
  1 Comment
Guillaume
Guillaume on 4 Jun 2015
Note that the sums you've written are the sums of the antidiagonals, not the diagonals.

Sign in to comment.

Answers (2)

Guillaume
Guillaume on 4 Jun 2015
Edited: Guillaume on 4 Jun 2015
To calculate the sums of the diagonals:
A=[ 1 2 3 4;5 6 7 8; 9 8 7 3]
s = arrayfun(@(d) sum(diag(A, d)), 1-size(A, 1):size(A, 2)-1)
If you really want the antidiagonal sums, then you'll have to flip A.

Andrei Bobrov
Andrei Bobrov on 4 Jun 2015
sum(spdiags(A(end:-1:1,:)))

Categories

Find more on Operating on Diagonal Matrices in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!