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 + -
显示快捷键?