marginal_family.m

来自「Bayes网络工具箱」· M 代码 · 共 41 行

M
41
字号
function marginal = marginal_family(engine, i, t)% MARGINAL_FAMILY Compute the marginal on the specified family (bk)% marginal = marginal_family(engine, i, t)if nargin < 3, t = 1; end% clpot{t} contains slice t-1 and t% Example% clpot #: 1    2    3% slices:  1  1,2  2,3% For filtering, we must take care not to take future evidence into account.% Hence, we use clpot{1} if t=1.% For smoothing, clpot{1} does not exist.bnet = bnet_from_engine(engine);ss = length(bnet.intra);if t == 1  nodes = family(bnet.dag, i);  if engine.filter    slice = 1;    c = clq_containing_family(engine.sub_engine1, i);  else    slice = 2;    c = clq_containing_family(engine.sub_engine, i);  endelse  nodes = family(bnet.dag, i+ss);  slice = t;  c = clq_containing_family(engine.sub_engine, i+ss);endassert(c >= 1);clpot = engine.clpot{slice};bigpot = clpot{c};marginal = pot_to_marginal(marginalize_pot(bigpot, nodes));% we convert the domain to the unrolled numbering system% so that update_ess extracts the right evidence.marginal.domain = nodes+(t-1)*ss;

⌨️ 快捷键说明

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