wolffd@0: function engine = cond_gauss_inf_engine(bnet) wolffd@0: % COND_GAUSS_INF_ENGINE Conditional Gaussian inference engine wolffd@0: % engine = cond_gauss_inf_engine(bnet) wolffd@0: % wolffd@0: % Enumerates all the discrete roots, and runs jtree on the remaining Gaussian nodes. wolffd@0: wolffd@0: dnodes = mysetdiff(1:length(bnet.dag), bnet.cnodes); wolffd@0: wolffd@0: %onodes = dnodes; % all the discrete ndoes will be observed wolffd@0: %engine.sub_engine = jtree_inf_engine(bnet, onodes); wolffd@0: bnet2 = bnet; wolffd@0: bnet2.observed = dnodes; wolffd@0: engine.sub_engine = jtree_inf_engine(bnet2); wolffd@0: wolffd@0: % This is where we will store the results between enter_evidence and marginal_nodes wolffd@0: engine.T = []; wolffd@0: engine.mu = []; wolffd@0: engine.Sigma = []; wolffd@0: engine.joint_dmarginal = []; wolffd@0: engine.onodes = []; % needed for marginal_nodes wolffd@0: engine.evidence = []; % needed for marginal_nodes add_ev wolffd@0: wolffd@0: engine = class(engine, 'cond_gauss_inf_engine', inf_engine(bnet));