enter_evidence.m

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

M
42
字号
function [engine, loglik] = enter_evidence(engine, evidence, filter)% ENTER_EVIDENCE Add the specified evidence to the network (hmm)% [engine, loglik] = enter_evidence(engine, evidence, filter)%% evidence{i,t} = [] if if X(i,t) is hidden, and otherwise contains its observed value (scalar or column vector)% If filter = 1, we do filtering, otherwise smoothing (default).if nargin < 3, filter = 0; endbnet = bnet_from_engine(engine);n = length(bnet.intra);onodes = engine.onodes;T = size(evidence, 2);assert(~any(isemptycell(evidence(onodes,:))));obslik = mk_hmm_obs_lik_mat(bnet, onodes, evidence);if engine.oneslice  [alpha, beta, gamma, loglik] = forwards_backwards_oneslice(engine.prior, engine.transmat, obslik, filter);else  [gamma, xi, loglik] = forwards_backwards(engine.prior, engine.transmat, obslik,  filter);end% Wrap the posterior inside a potential, so it can be marginalized easilyengine.one_slice_marginal = cell(1,T);engine.two_slice_marginal = cell(1,T);ns = bnet.node_sizes;ns(onodes) = 1;ns(onodes+n) = 1;ss = length(bnet.intra);for t=1:T  dom = (1:n);  engine.one_slice_marginal{t} = dpot(dom+(t-1)*ss, ns(dom), myreshape(gamma(:,t), ns(dom)));endif ~engine.oneslice  for t=1:T-1    dom = (1:(2*n));    engine.two_slice_marginal{t} = dpot(dom+(t-1)*ss, ns(dom), myreshape(xi(:,:,t), ns(dom)));  endend

⌨️ 快捷键说明

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