Diagonal Elements of the Square Matrix

2 Ansichten (letzte 30 Tage)
MByk
MByk am 7 Okt. 2017
Bearbeitet: MByk am 7 Okt. 2017
I am calculating Sorensen-Dice coefficient (2|A and B|/|A|+|B|) but diagonal elements (intersection with itself) of the square matrix is equal to zero. It is not a big problem but how can I convert them into ones. Thanks for the help.
v = [1 1 0 0 1 1 0; 1 1 0 1 0 0 0; 0 0 0 0 0 1 1]
d = squareform(pdist(v,@(a,b)(2 * sum((a.*b),2))./(sum(a) + sum(b,2))));

Akzeptierte Antwort

John D'Errico
John D'Errico am 7 Okt. 2017
If the diagonal is already EXACTLY zero, then this will suffice:
M = M + eye(size(M));
If they are only approximately zero, then you could do this:
M(find(eye(size(M)))) = 1;
For example,
M = magic(5)
M =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
M(find(eye(size(M)))) = 1;
M
M =
1 24 1 8 15
23 1 7 14 16
4 6 1 20 22
10 12 19 1 3
11 18 25 2 1
  1 Kommentar
MByk
MByk am 7 Okt. 2017
Bearbeitet: MByk am 7 Okt. 2017
Thank you for your reply. It is working but I still didn't understand why I get zeros instead of ones.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

James Tursa
James Tursa am 7 Okt. 2017
Another way:
M(1:size(M,1)+1:end) = 1;

Kategorien

Mehr zu Dimensionality Reduction and Feature Extraction finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by