Sum each element in a matrix with the previous elements on the same diagonal
조회 수: 1 (최근 30일)
이전 댓글 표시
I'm looking for an "efficient way", that will work on larger matrices like 2000 by 2000 in reasonable time, to do this operation on a given square symmetric and anti-symmetric matrix (Hankel matrix)
A =[1 2 3;
2 3 4;
3 4 5;];
Then the output should be
B = [1 2 3;
2 4 6;
3 6 9;]
댓글 수: 0
답변 (3개)
Walter Roberson
2016년 2월 3일
No. Your B(2,1) is 4 even then there is nothing proceeding it on the same diagonal from upper left to lower right. But 4 is the cumulative sum from the diagonals from the upper right to the lower left, the anti-diagonals. This establishes that you want both diagonal and anti-diagonal cumulative sums to be taken. But your B(3,1) is 4, which is not the cumulative sum along the anti-diagonal
x x 3
x 3 x
4 x x
Therefore there is no rule for what values should appear along the left column of B, and therefore the result cannot be computed.
Ajay Goyal
2016년 2월 3일
편집: Ajay Goyal
2016년 2월 3일
Simple Brother, Use a(i,j)=a(i,j)+a(i-1,j-1) in your double loop (for i=1:2000(for rows); for j=1:2000(for columns)) Thanks for accepting the answer formally
참고 항목
카테고리
Help Center 및 File Exchange에서 Operating on Diagonal Matrices에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!