changing diagional values with different values

1 Ansicht (letzte 30 Tage)
A Aln
A Aln am 21 Mär. 2019
Kommentiert: Star Strider am 21 Mär. 2019
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

Akzeptierte Antwort

Star Strider
Star Strider am 21 Mär. 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 Kommentare
A Aln
A Aln am 21 Mär. 2019
thank you so much, it works !!
Star Strider
Star Strider am 21 Mär. 2019
As always, my pleasure!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Fangjun Jiang
Fangjun Jiang am 21 Mär. 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;

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Produkte


Version

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by