How do I specify the diagonal elements of a matrix?

I have some values, taken from another matrix. How do I specify them to be the diagonals of a new matrix?

Answers (2)

To do a subscripted assignment into the diagonal of a matrix, you can use linear indexing:
A(1:n+1:end) = v
(where v is an n-element vector and n is the number of rows of A). So, for example,
A(1:n+1:end) = diag(B)
copies the diagonal of B into A.

5 Comments

I do not know why there is no comment. I have to say that it is the easiest way I have found. Excellent!
Another way (again assuming you know n already):
A(logical(eye(n))) = diag(B)
This works great for foward diagonals but how would one go about doing this to acess backwards diagonals?
n:n-1:end-n+1 for backwards diagonal on a square matrix
A(logical(fliplr(eye(n)))) = diag(B)

Sign in to comment.

Categories

Tags

Asked:

on 13 Feb 2011

Commented:

on 11 Sep 2020

Community Treasure Hunt

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

Start Hunting!