How to calculate diagonal for NxN matrix ?

Hi
I'm trying to calculate the sum diagonal from a square matrix (size NxN). For example: A = [1 2 3 4; 5 6 7 8; 9 0 1 2; 3 4 5 6]; %square matrix Then if you would rotate the matrix by 45 degrees and take sum of the rotated martix. Like: imrotate(A,45)
What I'm trying to do is to find the diagonal sum of A. Therefore I want to construct a vector of size 1x(N+2) or for this A = [1 2 3 4; 5 6 7 8; 9 0 1 2; 3 4 5 6] it would be an vector of size 1x6.
Could you please help me? :)

4 Comments

what do you mean rotate 45°
Like imrotate(A,45)
Do you mean 90 deg instead of 45 deg?
I don't quite get it. Are you saying you want the sum along each diagonal? But if so, why is the resulting vector 1x(N+2)? Shouldn't it be 1x(2*N-1)? Could you post the desired answer for your sample matrix?

Sign in to comment.

 Accepted Answer

YOu could use
sum(diag(A))
this is essentially
trace(A)
What does rotation by 45 mean

2 Comments

Lily
Lily on 18 Sep 2012
Edited: Lily on 18 Sep 2012
Like if I would imrotate(A,45)
IF you use imrotate(A,45) you get a 9x9 matrix and not the 4x4 matrix you started with..

Sign in to comment.

More Answers (1)

Wayne King
Wayne King on 18 Sep 2012
Edited: Wayne King on 18 Sep 2012
Just use trace()
trace(A)

2 Comments

Thx for the answer, but f I use trace(A) I only get the diagonal of the matrix A.
It's easy to say in general what an NxN matrix looks like for a multiple of 90 degrees, but what does it look like for 45? For N>3, I'm not sure what that looks like without padding the matrix with zeros like imrotate

Sign in to comment.

Categories

Asked:

on 18 Sep 2012

Community Treasure Hunt

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

Start Hunting!