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

Tia Miller
Tia Miller 2018년 10월 15일
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

댓글을 달려면 로그인하십시오.

 채택된 답변

Andrei Bobrov
Andrei Bobrov 2015년 9월 27일
편집: Andrei Bobrov 2015년 9월 27일

0 개 추천

sum(diag(a(:,end:-1:1)));
or summing all diagonals:
sum(spdiags(rot90(a)));

추가 답변 (2개)

John D'Errico
John D'Errico 2015년 9월 27일

0 개 추천

sum(diag(flip(A)))
should work.
Ahmed Diaa
Ahmed Diaa 2018년 5월 5일

0 개 추천

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

카테고리

도움말 센터File Exchange에서 Operating on Diagonal Matrices에 대해 자세히 알아보기

질문:

2015년 9월 27일

댓글:

2018년 10월 15일

Community Treasure Hunt

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

Start Hunting!

Translated by