MATLAB Answers

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

Asked by Emanuele Joy

### Emanuele Joy (view profile)

on 8 Jun 2018
Latest activity Edited by Birdman

### Birdman (view profile)

on 8 Jun 2018
Accepted Answer by Birdman

### Birdman (view profile)

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?

Aquatris

### Aquatris (view profile)

on 8 Jun 2018
Try this solution ; https://www.mathworks.com/matlabcentral/answers/294766-most-efficient-way-to-sum-anti-diagonal-elements

Sign in to comment.

## 1 Answer

Answer by Birdman

### Birdman (view profile)

on 8 Jun 2018
Edited by Birdman

### Birdman (view profile)

on 8 Jun 2018
Accepted Answer

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

#### 0 Comments

Sign in to comment.