How do I access and modify only the non diagonal entries in a matrix?

125 visualizaciones (últimos 30 días)
hello.. i hv a question. what is the command to call the non diagonal entries of a matrix? tq very much...

Respuesta aceptada

Rick Rosson
Rick Rosson el 28 de Jul. de 2011
Please try the following:
M = 8;
N = 5;
X = randn(M,N);
idx = eye(M,N);
Y = (1-idx).*X;
Z = X(~idx);
HTH.
Best, Rick
Responding to your comment:
To multiply the non-diagonal elements by 2, please try:
A = [2 3 5;3 6 8;5 8 4];
idx = eye(size(A));
idx = idx + 2*(1-idx);
Y = idx.*A;
HTH.
Best, Rick
  4 comentarios
srycandy
srycandy el 28 de Jul. de 2011
i wanna keep the diagonal entries as well..and i also want the result also in 3x3 matrix..tq

Iniciar sesión para comentar.

Más respuestas (3)

Nathan Greco
Nathan Greco el 28 de Jul. de 2011
If tmp is your matrix, try:
tmp-diag(diag(tmp)) %works only with square matrices
OR
triu(tmp,1)+tril(tmp,-1)
Both of these set the diagonal entries to zero, essentially ignoring them. If this isn't what you want, please clarify.
  5 comentarios
Nathan Greco
Nathan Greco el 28 de Jul. de 2011
OR: A.*2-diag(diag(A)) would work.
srycandy
srycandy el 28 de Jul. de 2011
yup.. A.*2-diag(diag(A)) is the one i'm searching for.. i forgot to mentioned that i wanna keep the diagonal entries as well.. anyway, tq..

Iniciar sesión para comentar.


dor eivensitz
dor eivensitz el 2 de Nov. de 2017
i want to keep both diagonal in matrix size i don't know, defined by n, and all other elements to multiply by them self plus 1. tnx
  1 comentario
James Tursa
James Tursa el 2 de Nov. de 2017
Please open up a new question for this, and provide a short example in that new question.

Iniciar sesión para comentar.


James Tursa
James Tursa el 2 de Nov. de 2017
Another way for a square matrix:
M = your matrix
x = ~logical(eye(size(M)));
M(x) = 2*M(x); % <-- or whatever function you want on the rhs using M(x)

Categorías

Más información sobre Matrix Indexing 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