Sum of cross diagonals of a non symmetric matrix
Show older comments
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
on 4 Jun 2015
Note that the sums you've written are the sums of the antidiagonals, not the diagonals.
Answers (2)
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
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!