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

📄 marginal_family.m

📁 贝叶斯网络的matlab实现。可以创建贝叶斯网络、训练模型
💻 M
字号:
function marginal = marginal_family(engine, b, i, t, add_ev)
% MARGINAL_FAMILY Compute the marginal on the specified family (hmm_2TBN)
% marginal = marginal_family(engine, b, i, t, add_ev)

ns = engine.eff_node_sizes(:);
ss = engine.slice_size;

if t==1 % | ~engine.persist_bitv(i)
  bigT = b.gamma;
  ps = engine.parents{i};
  dom = [ps i];
  %id = engine.marg_fam1_ndx_id(i);
  bigdom = 1:ss;
  bigsz = ns(bigdom);
  bigdom = bigdom + (t-1)*ss;
else % some parents are in previous slice
  bigT = b.xi; % (t-1,t)
  ps = engine.parents{i+ss};
  dom = [ps i+ss] + (t-2)*ss;
  %id = engine.marg_fam2_ndx_id(i);
  bigdom = 1:(2*ss); % domain of xi(:,:,t)
  bigsz = ns(bigdom);
  bigdom = bigdom + (t-2)*ss;
end
marginal.domain = dom;

%ndx = get_ndx(id, engine.ndx_type);
%marginal.T = marg_table_ndx(bigT, engine.maximize, ndx, engine.ndx_type);
%global SD_NDX
%ndx = SD_NDX{id};
%marginal.T = marg_table_ndxSD(bigT, engine.maximize, ndx);
marginal.T = marg_table(bigT, bigdom, bigsz, dom, engine.maximize); 

assert(~add_ev);

⌨️ 快捷键说明

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