Daniel@0: function pi = CPD_to_pi(CPD, msg_type, n, ps, msg, evidence) Daniel@0: % COMPUTE_PI Compute pi vector (discrete) Daniel@0: % pi = compute_pi(CPD, msg_type, n, ps, msg, evidence) Daniel@0: % Pearl p183 eq 4.51 Daniel@0: Daniel@0: switch msg_type Daniel@0: case 'd', Daniel@0: T = prod_CPT_and_pi_msgs(CPD, n, ps, msg); Daniel@0: pi = pot_to_marginal(marginalize_pot(T, n)); Daniel@0: pi = pi.T(:); Daniel@0: case 'g', Daniel@0: error('can only convert discrete CPD to Gaussian pi if observed') Daniel@0: end