MATLAB Answers

Translated by

このページのコンテンツは英語から自動翻訳されています。自動翻訳をオフにする場合は「<a class="turn_off_mt" href="#" onclick="window._kiq.push(['set', { 'event': 'Turn off MT' }]);">ここ</a>」をクリックしてください。

MByk
0

Diagonal Elements of the Square Matrix

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))));

  0 件のコメント

サインイン to comment.

2 件の回答

回答者: 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
2017 年 10 月 7 日
Thank you for your reply. It is working but I still didn't understand why I get zeros instead of ones.

サインイン to comment.


回答者: James Tursa
2017 年 10 月 7 日

Another way:
M(1:size(M,1)+1:end) = 1;

  1 件のコメント

MByk
2017 年 10 月 7 日
Thank you for your reply.

サインイン to comment.



Translated by