How to Sum matrix diagonals

조회 수: 146 (최근 30일)
Krish Desai
Krish Desai 2015년 9월 27일
댓글: Tia Miller 2018년 10월 15일
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일
sum(diag(a(:,end:-1:1)));
or summing all diagonals:
sum(spdiags(rot90(a)));

추가 답변 (2개)

John D'Errico
John D'Errico 2015년 9월 27일
sum(diag(flip(A)))
should work.

Ahmed Diaa
Ahmed Diaa 2018년 5월 5일
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

카테고리

Help CenterFile Exchange에서 Operating on Diagonal Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by