marginal_node.m
来自「Bayes网络工具箱」· M 代码 · 共 45 行
M
45 行
function marginal = marginal_node(engine, i, t)% MARGINAL_NODE Compute the marginal on the specified node (bk)%% marginal = marginal_node(engine, i, t)% returns Pr(X(i,t) | Y(1:T)), where X(i,t) is the i'th node in the t'th slice.% If enter_evidence used filtering instead of smoothing, this will return Pr(X(i,t) | Y(1: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 = 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 = 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 + -
显示快捷键?