changing diagional values with different values

Hello,
Is there any way to do the following:
let assume this is my matrix (MX1):
x1 8 4 0
4 x2 0 9
1 0 x3 3
0 3 0 x4
what I'm trying to do is the followin:
I should calculate each "x", where x = the summation of the values in the same row. for Exp: X1 = 8+4+0. [are there any way to automate this calculation?]
My idea is changing the x's diagonal to zeros to get the summation from, where the x will be zero. [I know how to do it]
then, generating a duplicated matrix and copy the calculated diagonal to the new matrix. [Is that possible ?] *this is must be automated because my matrix is 98*98
Thanks

 Respuesta aceptada

Star Strider
Star Strider el 21 de Mzo. de 2019
I am not certain what result you want.
Try this:
MX1 = randi(9, 4)
D1 = diag(MX1);
Xv = sum(MX1,2) - D1;
MX1 = triu(MX1,1) + tril(MX1,-1) + diag(Xv)
Experiment to get the result you want.

2 comentarios

A Aln
A Aln el 21 de Mzo. de 2019
thank you so much, it works !!
Star Strider
Star Strider el 21 de Mzo. de 2019
As always, my pleasure!

Iniciar sesión para comentar.

Más respuestas (1)

Fangjun Jiang
Fangjun Jiang el 21 de Mzo. de 2019
n=5;
a=magic(n);
b=a;
index=sub2ind(size(a),1:n,1:n);
b(index)=0;
s=sum(b,2);
b(index)=s;

Categorías

Productos

Versión

R2018b

Preguntada:

el 21 de Mzo. de 2019

Comentada:

el 21 de Mzo. de 2019

Community Treasure Hunt

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

Start Hunting!

Translated by