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