?? fwd.m
字號(hào):
function [f, logscale] = fwd(engine, fpast, ev, t)
% Forwards pass.
bnet = bnet_from_engine(engine);
ss = bnet.nnodes_per_slice;
ndx_type = engine.ndx_type;
ev2 = cell(ss, 2);
ev2(:,1) = fpast.evidence;
ev2(:,2) = ev;
CPDpot = cell(1,ss);
for n=1:ss
fam = family(bnet.dag, n, 2);
e = bnet.equiv_class(n, 2);
CPDpot{n} = convert_to_table(bnet.CPD{e}, fam(:), ev2);
end
f.evidence = ev;
f.t = t;
% get prior
prior = cell(1,1);
int = engine.interface;
if fpast.t==1
id = engine.marg_intclq1_onto_int_ndx_id;
ndx = get_ndx(id, ndx_type);
prior{1} = marg_table_ndx(fpast.clpot{engine.int_clq1}, engine.maximize, ndx, ndx_type);
else
id = engine.marg_outclq_onto_int2_ndx_id;
ndx = get_ndx(id, ndx_type);
prior{1} = marg_table_ndx(fpast.clpot{engine.out_clq}, engine.maximize, ndx, ndx_type);
%prior = set_domain_pot(prior, int); % shift back to slice 1
end
%pots = [ {prior} CPDpot ];
slice1 = 1:ss;
slice2 = slice1 + ss;
CPDclqs = engine.clq_ass_to_node(slice2);
D = engine.in_clq;
%clqs = [D CPDclqs];
ndx2 = cell(1,1);
id = engine.mult_int_onto_inclq_ndx_id;
ndx2{1} = get_ndx(id, ndx_type);
[f.clpot, f.seppot] = init_pot(engine.jtree_engine, slice2, CPDpot, D, prior, ndx2);
[f.clpot, f.seppot] = collect_evidence(engine.jtree_engine, f.clpot, f.seppot);
for c=1:length(f.clpot)
[f.clpot{c}, lik] = normalise(f.clpot{c});
ll(c) = log(lik + (lik==0)*eps);
end
logscale = ll(engine.root);
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -