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

📄 fwd.m

📁 麻省理工学院的人工智能工具箱,很珍贵,希望对大家有用!
💻 M
字号:
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);

⌨️ 快捷键说明

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