marginal_nodes.m

来自「麻省理工学院的人工智能工具箱,很珍贵,希望对大家有用!」· M 代码 · 共 47 行

M
47
字号
function marginal = marginal_nodes(engine, query, add_ev)% MARGINAL_NODES Compute the marginal on the specified query nodes (stab_cond_gauss)% marginal = marginal_nodes(engine, query, add_ev)%% 'query' must be a singleton set.% add_ev is an optional argument; if 1, we will "inflate" the marginal of observed nodes% to their original size, adding 0s to the positions which contradict the evidenceif nargin < 3, add_ev = 0; endbnet = bnet_from_engine(engine);nclq = length(engine.cliques);b_marg = 0;for i = 1:nclq  if mysubset(query, engine.cliques{i})    pot = struct(engine.clpot{i});    %if mysubset(query, pot.cheaddom) | mysubset(query, pot.ddom)    if mysubset(query, pot.domain)      marginal = marginal_singleclq_nodes(engine, i, query);      b_marg = 1;      break;    end  endendif ~b_marg     if length(query) == 1        c = clq_containing_nodes(engine, query);        if c == -1            error(['no clique contains ' num2str(query)]);        end        marginal.domain = query;        marginal.mu = [];        marginal.Sigma = [];        marginal.T = 1;    else        marginal = marginal_difclq_nodes(engine, query);    endendif add_ev  bnet = bnet_from_engine(engine);  %marginal = add_ev_to_dmarginal(marginal, engine.evidence, bnet.node_sizes);  marginal = add_evidence_to_gmarginal(marginal, engine.evidence, bnet.node_sizes, bnet.cnodes);end

⌨️ 快捷键说明

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