⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 extension_pot.m

📁 贝叶斯算法(matlab编写) 安装,添加目录 /home/ai2/murphyk/matlab/FullBNT
💻 M
字号:
function pot = extension_pot(oldpot, ddom_u, dsizes, ctaildom_u, csizes)
% EXTENSION_POT Extense a stable CG potential.
% pot = extension_pot(oldpot, ddom_u, ctaildom_u, dsizes, csizes)
% ddom_u Added discrete nodes
% ctaildom_u Added continuous tail nodes
% csizes is the size of the tail nodes.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% A CG potential can be extended by adding discrete variables to its %
% domain of continuous variables to its tail                         %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ddom = myunion(oldpot.ddom, ddom_u);
ctaildom = myunion(oldpot.ctaildom, ctaildom_u);
cheaddom = oldpot.cheaddom;
udom = myunion(ddom_u, ctaildom_u);
domain = myunion(oldpot.domain, udom);

ns = zeros(1,max(domain));
ns(ddom_u) = dsizes;
ns(ctaildom_u) = csizes;
ns(oldpot.ddom) = oldpot.dsizes;
ns(oldpot.cheaddom) = oldpot.cheadsizes;
ns(oldpot.ctaildom) = oldpot.ctailsizes;

dsizes = ns(ddom);
dsize = prod(ns(ddom));
cheadsizes = ns(cheaddom);
cheadsize = sum(ns(cheaddom));
ctailsizes = ns(ctaildom);
ctailsize = sum(ns(ctaildom));

BZ = zeros(cheadsize, ctailsize);
potarray = cell(1, dsize);
mask = find_equiv_posns(oldpot.ddom, ddom);

tmask = find_equiv_posns(oldpot.ctaildom, ctaildom);
tu = block(tmask, ctailsizes);

for i=1:dsize
    sub1 = ind2subv(dsizes, i);
    sub2 = sub1(mask);
    ind = subv2ind(oldpot.dsizes, sub2);
    if isempty(ind)
        ind = 1;
    end
    potc = struct(oldpot.scgpotc{ind});
    p = potc.p;
    B = BZ;
    if ~isempty(B)
        B(:, tu) = potc.B;
    end
    potarray{i} = scgcpot(cheadsize, ctailsize, p, potc.A, B, potc.C);
end

pot = scgpot(ddom, cheaddom, ctaildom, ns,potarray);

⌨️ 快捷键说明

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