Diagonal Elements of the Square Matrix

2 ビュー (過去 30 日間)
MByk
MByk 2017 年 10 月 7 日
編集済み: MByk 2017 年 10 月 7 日
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))));

採用された回答

John D'Errico
John D'Errico 2017 年 10 月 7 日
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 件のコメント
MByk
MByk 2017 年 10 月 7 日
編集済み: MByk 2017 年 10 月 7 日
Thank you for your reply. It is working but I still didn't understand why I get zeros instead of ones.

サインインしてコメントする。

その他の回答 (1 件)

James Tursa
James Tursa 2017 年 10 月 7 日
Another way:
M(1:size(M,1)+1:end) = 1;
  1 件のコメント
MByk
MByk 2017 年 10 月 7 日
Thank you for your reply.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeDimensionality Reduction and Feature Extraction についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by