wolffd@0: function [jpot, loglik] = compute_joint_pot(bnet, nodes, evidence, domain) wolffd@0: % COMPUTE_JOINT_POT Compute the global joint potential of a Bayes net wolffd@0: % function jpot = compute_joint_pot(bnet, nodes, evidence, domain) wolffd@0: wolffd@0: if nargin < 4, domain = nodes; end wolffd@0: wolffd@0: onodes = find(~isemptycell(evidence)); wolffd@0: pot_type = determine_pot_type(bnet, onodes, domain); wolffd@0: wolffd@0: jpot = mk_initial_pot(pot_type, domain, bnet.node_sizes, bnet.cnodes, onodes); wolffd@0: for i=nodes(:)' wolffd@0: e = bnet.equiv_class(i); wolffd@0: fam = family(bnet.dag, i); wolffd@0: pot = convert_to_pot(bnet.CPD{e}, pot_type, fam(:), evidence); wolffd@0: jpot = multiply_by_pot(jpot, pot); wolffd@0: end wolffd@0: %[jpot, loglik] = normalize_pot(jpot); % causes errors in asia_dt1 etc