Diagonal of a non-squared martrix

28 visualizaciones (últimos 30 días)
Nikolas Spiliopoulos
Nikolas Spiliopoulos el 4 de Mayo de 2018
Respondida: Nikolas Spiliopoulos el 6 de Mayo de 2018
Hello all,
I have a matrix A=zeros(179,716)
and I am trying to put the value "1" in its diagonal
however it's not a squared matrix so I don;t know how to this!
any ideas?
thanks a lot

Respuesta aceptada

Nikolas Spiliopoulos
Nikolas Spiliopoulos el 6 de Mayo de 2018
Alright thanks a lot!!!!

Más respuestas (1)

Wick
Wick el 4 de Mayo de 2018
Editada: Wick el 4 de Mayo de 2018
MATLAB has a built-in function for the identity matrix, 'eye'. There are two diagonals in a non-square matrix. We'll set both, one at a time. If you only want the first, don't use the second line.
A=zeros(179,716);
E = eye(179);
% Here's where we set the first diagonal
A(:,1:179) = E;
% we don't want to stop on the 1's already there
% so we use a max to keep the larger value
A(:,(end-179+1):end) = max(E, A(:,(end-179+1):end) );
% Your matrix is actually wide enough the second definition
% doesn't need the max, but if it was closer to a square you
% wouldn't want to stomp on the ones already there. Instead of
% a max command you could also add the subset of A to the identity
% matrix.
  3 comentarios
Nikolas Spiliopoulos
Nikolas Spiliopoulos el 4 de Mayo de 2018
Thanks for the answer! However I realized that it doesn't put 1 for the columns : 180-537
Wick
Wick el 4 de Mayo de 2018
Editada: Wick el 4 de Mayo de 2018
But that's not a diagonal. Diagonals start in corners. If you want the diagonal to repeat 4 times across the array you could use 'repmat' to make a 1,4 array of the identity matrix and overwrite the original. Actually, since all you want is the zeros and ones, you can start right there:
A = repmat(eye(179),1,4);
Edit, I suppose any diagonal is a diagonal. But I thought you meant the major diagonals. In a square that would be from top left to bottom right. In a rectangular array it would be top-left to bottom and bottom-right to the top.

Iniciar sesión para comentar.

Categorías

Más información sobre Operating on Diagonal Matrices en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by