info_dis_fdod_calc.m

来自「计算Information Discrepancy中的FDOD函数集」· M 代码 · 共 21 行

M
21
字号
function [Bk B R]=info_dis_FDOD_calc(U)

Bk=[];
[s ml]=size(U);
rowSum=sum(U,1);
for i=1:s
    tmp=0;
    for j=1:ml
        % 规定 0*log0 = 0*log(0/0) = 0
        % 这需要判断 U(i,j)是否等于0, 因为如果U(i,j)~=0, 由于U(i,j)>0
        % 则该列和rowSum(j)必然>=U(i,j)从而必然~=0.
        % 如果U(i,j)==0, 则内循环直接跳至下次循环
        if U(i,j)~=0
            tmp=tmp+U(i,j)*(log(U(i,j))-log(rowSum(j))+log(s));
        end
    end
    Bk=[Bk tmp];
end
clear i j tmp;
B=sum(Bk);
R=B/(s*log(s));

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?