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