Daniel@0: function lam_msg = CPD_to_lambda_msg(CPD, msg_type, n, ps, msg, p, evidence) Daniel@0: % CPD_TO_LAMBDA_MSG Compute lambda message (discrete) Daniel@0: % lam_msg = compute_lambda_msg(CPD, msg_type, n, ps, msg, p, evidence) Daniel@0: % Pearl p183 eq 4.52 Daniel@0: Daniel@0: switch msg_type Daniel@0: case 'd', Daniel@0: T = prod_CPT_and_pi_msgs(CPD, n, ps, msg, p); Daniel@0: mysize = length(msg{n}.lambda); Daniel@0: lambda = dpot(n, mysize, msg{n}.lambda); Daniel@0: T = multiply_by_pot(T, lambda); Daniel@0: lam_msg = pot_to_marginal(marginalize_pot(T, p)); Daniel@0: lam_msg = lam_msg.T; Daniel@0: case 'g', Daniel@0: error('discrete_CPD can''t create Gaussian msgs') Daniel@0: end