Diagonal Elements of the Square Matrix

1 vue (au cours des 30 derniers jours)
MByk
MByk le 7 Oct 2017
Modifié(e) : MByk le 7 Oct 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))));

Réponse acceptée

John D'Errico
John D'Errico le 7 Oct 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 commentaire
MByk
MByk le 7 Oct 2017
Modifié(e) : MByk le 7 Oct 2017
Thank you for your reply. It is working but I still didn't understand why I get zeros instead of ones.

Connectez-vous pour commenter.

Plus de réponses (1)

James Tursa
James Tursa le 7 Oct 2017
Another way:
M(1:size(M,1)+1:end) = 1;
  1 commentaire
MByk
MByk le 7 Oct 2017
Thank you for your reply.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Dimensionality Reduction and Feature Extraction dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by